// export def_amount_of_siberit , def_public_score , def_amount_of_apemen ; export is_depot , number_of_breastworks , number_of_people , skill_level , starting_crates , starting_resources , shipments_density , morale_decreasing_time , amount_of_apemen , amount_of_siberit , respawning_time_min , respawning_time_max , OmicronAI , ArabianAI , BeriaAI , KirovAI , DifficultyC , def_omicron_ai , def_arabian_ai , def_beria_ai , def_kirov_ai , def_difficulty ; export Side_Teams , Teams ; export Side_Positions , Side_Nations , Team_Game ; export cSides ; export Position_Sides ; export depot_def , breastworks_def , start_def , normal_oil_deposits_locations , extra_oil_deposits_locations , normal_sib_deposits_locations , extra_sib_deposits_locations , battle_flags_id ; var commander ; var global_units , global_defined , soldiers_created ; var neng , nsci , nmech , nsol ; function read_multiplayer_and_game_parameters ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// if Multiplayer then
   4: LD_OWVAR 4
   8: IFFALSE 62
// begin Your_Side := mp_player_side ;
  10: LD_ADDR_OWVAR 2
  14: PUSH
  15: LD_OWVAR 7
  19: ST_TO_ADDR
// Side_Positions := mp_sides_positions ;
  20: LD_ADDR_EXP 28
  24: PUSH
  25: LD_OWVAR 17
  29: ST_TO_ADDR
// Side_Teams := mp_sides_teams ;
  30: LD_ADDR_EXP 26
  34: PUSH
  35: LD_OWVAR 15
  39: ST_TO_ADDR
// Side_Nations := mp_sides_nations ;
  40: LD_ADDR_EXP 29
  44: PUSH
  45: LD_OWVAR 16
  49: ST_TO_ADDR
// Teams := mp_teams ;
  50: LD_ADDR_EXP 27
  54: PUSH
  55: LD_OWVAR 12
  59: ST_TO_ADDR
// end else
  60: GO 236
// begin Your_Side := 6 ;
  62: LD_ADDR_OWVAR 2
  66: PUSH
  67: LD_INT 6
  69: ST_TO_ADDR
// Side_Positions := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
  70: LD_ADDR_EXP 28
  74: PUSH
  75: LD_INT 0
  77: PUSH
  78: LD_INT 0
  80: PUSH
  81: LD_INT 0
  83: PUSH
  84: LD_INT 0
  86: PUSH
  87: LD_INT 0
  89: PUSH
  90: LD_INT 0
  92: PUSH
  93: LD_INT 0
  95: PUSH
  96: LD_INT 0
  98: PUSH
  99: EMPTY
 100: LIST
 101: LIST
 102: LIST
 103: LIST
 104: LIST
 105: LIST
 106: LIST
 107: LIST
 108: ST_TO_ADDR
// Side_Teams := [ 1 , 2 , 1 , 4 , 0 , 0 , 0 , 0 ] ;
 109: LD_ADDR_EXP 26
 113: PUSH
 114: LD_INT 1
 116: PUSH
 117: LD_INT 2
 119: PUSH
 120: LD_INT 1
 122: PUSH
 123: LD_INT 4
 125: PUSH
 126: LD_INT 0
 128: PUSH
 129: LD_INT 0
 131: PUSH
 132: LD_INT 0
 134: PUSH
 135: LD_INT 0
 137: PUSH
 138: EMPTY
 139: LIST
 140: LIST
 141: LIST
 142: LIST
 143: LIST
 144: LIST
 145: LIST
 146: LIST
 147: ST_TO_ADDR
// Side_Nations := [ 1 , 2 , 3 , 1 , 2 , 3 , 0 , 0 ] ;
 148: LD_ADDR_EXP 29
 152: PUSH
 153: LD_INT 1
 155: PUSH
 156: LD_INT 2
 158: PUSH
 159: LD_INT 3
 161: PUSH
 162: LD_INT 1
 164: PUSH
 165: LD_INT 2
 167: PUSH
 168: LD_INT 3
 170: PUSH
 171: LD_INT 0
 173: PUSH
 174: LD_INT 0
 176: PUSH
 177: EMPTY
 178: LIST
 179: LIST
 180: LIST
 181: LIST
 182: LIST
 183: LIST
 184: LIST
 185: LIST
 186: ST_TO_ADDR
// Teams := [ [ 1 ] , [ 2 ] , [ 3 ] , [ 4 ] , [ 5 ] , [ 6 ] ] ;
 187: LD_ADDR_EXP 27
 191: PUSH
 192: LD_INT 1
 194: PUSH
 195: EMPTY
 196: LIST
 197: PUSH
 198: LD_INT 2
 200: PUSH
 201: EMPTY
 202: LIST
 203: PUSH
 204: LD_INT 3
 206: PUSH
 207: EMPTY
 208: LIST
 209: PUSH
 210: LD_INT 4
 212: PUSH
 213: EMPTY
 214: LIST
 215: PUSH
 216: LD_INT 5
 218: PUSH
 219: EMPTY
 220: LIST
 221: PUSH
 222: LD_INT 6
 224: PUSH
 225: EMPTY
 226: LIST
 227: PUSH
 228: EMPTY
 229: LIST
 230: LIST
 231: LIST
 232: LIST
 233: LIST
 234: LIST
 235: ST_TO_ADDR
// end ; for i := 1 to 8 do
 236: LD_ADDR_VAR 0 2
 240: PUSH
 241: DOUBLE
 242: LD_INT 1
 244: DEC
 245: ST_TO_ADDR
 246: LD_INT 8
 248: PUSH
 249: FOR_TO
 250: IFFALSE 288
// if Multiplayer_GetPlayerIsSpec ( i ) then
 252: LD_VAR 0 2
 256: PPUSH
 257: CALL_OW 530
 261: IFFALSE 286
// Side_Positions := Replace ( Side_Positions , i , 0 ) ;
 263: LD_ADDR_EXP 28
 267: PUSH
 268: LD_EXP 28
 272: PPUSH
 273: LD_VAR 0 2
 277: PPUSH
 278: LD_INT 0
 280: PPUSH
 281: CALL_OW 1
 285: ST_TO_ADDR
 286: GO 249
 288: POP
 289: POP
// Position_Sides := [ 0 , 0 , 0 , 0 , 0 , 0 ] ;
 290: LD_ADDR_EXP 32
 294: PUSH
 295: LD_INT 0
 297: PUSH
 298: LD_INT 0
 300: PUSH
 301: LD_INT 0
 303: PUSH
 304: LD_INT 0
 306: PUSH
 307: LD_INT 0
 309: PUSH
 310: LD_INT 0
 312: PUSH
 313: EMPTY
 314: LIST
 315: LIST
 316: LIST
 317: LIST
 318: LIST
 319: LIST
 320: ST_TO_ADDR
// for i := 1 to 8 do
 321: LD_ADDR_VAR 0 2
 325: PUSH
 326: DOUBLE
 327: LD_INT 1
 329: DEC
 330: ST_TO_ADDR
 331: LD_INT 8
 333: PUSH
 334: FOR_TO
 335: IFFALSE 382
// if Side_Positions [ i ] then
 337: LD_EXP 28
 341: PUSH
 342: LD_VAR 0 2
 346: ARRAY
 347: IFFALSE 380
// Position_Sides := Replace ( Position_Sides , Side_Positions [ i ] , i ) ;
 349: LD_ADDR_EXP 32
 353: PUSH
 354: LD_EXP 32
 358: PPUSH
 359: LD_EXP 28
 363: PUSH
 364: LD_VAR 0 2
 368: ARRAY
 369: PPUSH
 370: LD_VAR 0 2
 374: PPUSH
 375: CALL_OW 1
 379: ST_TO_ADDR
 380: GO 334
 382: POP
 383: POP
// Team_Game := Side_Teams [ your_side ] ;
 384: LD_ADDR_EXP 30
 388: PUSH
 389: LD_EXP 26
 393: PUSH
 394: LD_OWVAR 2
 398: ARRAY
 399: ST_TO_ADDR
// cSides := Side_Positions ;
 400: LD_ADDR_EXP 31
 404: PUSH
 405: LD_EXP 28
 409: ST_TO_ADDR
// if Multiplayer then
 410: LD_OWVAR 4
 414: IFFALSE 587
// begin def_base_level := GetMultiplayerSetting ( 0 ) ;
 416: LD_ADDR_EXP 43
 420: PUSH
 421: LD_INT 0
 423: PPUSH
 424: CALL_OW 426
 428: ST_TO_ADDR
// def_amount_of_people := GetMultiplayerSetting ( 1 ) ;
 429: LD_ADDR_EXP 44
 433: PUSH
 434: LD_INT 1
 436: PPUSH
 437: CALL_OW 426
 441: ST_TO_ADDR
// def_skill_level := GetMultiplayerSetting ( 2 ) ;
 442: LD_ADDR_EXP 45
 446: PUSH
 447: LD_INT 2
 449: PPUSH
 450: CALL_OW 426
 454: ST_TO_ADDR
// def_starting_resources := GetMultiplayerSetting ( 3 ) ;
 455: LD_ADDR_EXP 46
 459: PUSH
 460: LD_INT 3
 462: PPUSH
 463: CALL_OW 426
 467: ST_TO_ADDR
// def_shipments_density := GetMultiplayerSetting ( 4 ) ;
 468: LD_ADDR_EXP 47
 472: PUSH
 473: LD_INT 4
 475: PPUSH
 476: CALL_OW 426
 480: ST_TO_ADDR
// def_shared_vision := GetMultiplayerSetting ( 10 ) ;
 481: LD_ADDR_EXP 48
 485: PUSH
 486: LD_INT 10
 488: PPUSH
 489: CALL_OW 426
 493: ST_TO_ADDR
// def_people_respawning := GetMultiplayerSetting ( 13 ) ;
 494: LD_ADDR_EXP 49
 498: PUSH
 499: LD_INT 13
 501: PPUSH
 502: CALL_OW 426
 506: ST_TO_ADDR
// def_amount_of_apemen := GetMultiplayerSetting ( 14 ) ;
 507: LD_ADDR_EXP 3
 511: PUSH
 512: LD_INT 14
 514: PPUSH
 515: CALL_OW 426
 519: ST_TO_ADDR
// def_omicron_ai := GetMultiplayerSetting ( 15 ) ;
 520: LD_ADDR_EXP 21
 524: PUSH
 525: LD_INT 15
 527: PPUSH
 528: CALL_OW 426
 532: ST_TO_ADDR
// def_arabian_ai := GetMultiplayerSetting ( 18 ) ;
 533: LD_ADDR_EXP 22
 537: PUSH
 538: LD_INT 18
 540: PPUSH
 541: CALL_OW 426
 545: ST_TO_ADDR
// def_beria_ai := GetMultiplayerSetting ( 16 ) ;
 546: LD_ADDR_EXP 23
 550: PUSH
 551: LD_INT 16
 553: PPUSH
 554: CALL_OW 426
 558: ST_TO_ADDR
// def_kirov_ai := GetMultiplayerSetting ( 17 ) ;
 559: LD_ADDR_EXP 24
 563: PUSH
 564: LD_INT 17
 566: PPUSH
 567: CALL_OW 426
 571: ST_TO_ADDR
// def_difficulty := GetMultiplayerSetting ( 19 ) ;
 572: LD_ADDR_EXP 25
 576: PUSH
 577: LD_INT 19
 579: PPUSH
 580: CALL_OW 426
 584: ST_TO_ADDR
// end else
 585: GO 703
// begin Randomize ;
 587: CALL_OW 10
// def_base_level := 2 ;
 591: LD_ADDR_EXP 43
 595: PUSH
 596: LD_INT 2
 598: ST_TO_ADDR
// def_amount_of_people := 0 ;
 599: LD_ADDR_EXP 44
 603: PUSH
 604: LD_INT 0
 606: ST_TO_ADDR
// def_skill_level := 1 ;
 607: LD_ADDR_EXP 45
 611: PUSH
 612: LD_INT 1
 614: ST_TO_ADDR
// def_starting_resources := 2 ;
 615: LD_ADDR_EXP 46
 619: PUSH
 620: LD_INT 2
 622: ST_TO_ADDR
// def_shipments_density := 1 ;
 623: LD_ADDR_EXP 47
 627: PUSH
 628: LD_INT 1
 630: ST_TO_ADDR
// def_shared_vision := 1 ;
 631: LD_ADDR_EXP 48
 635: PUSH
 636: LD_INT 1
 638: ST_TO_ADDR
// def_people_respawning := 2 ;
 639: LD_ADDR_EXP 49
 643: PUSH
 644: LD_INT 2
 646: ST_TO_ADDR
// def_amount_of_siberit := 0 ;
 647: LD_ADDR_EXP 1
 651: PUSH
 652: LD_INT 0
 654: ST_TO_ADDR
// def_public_score := 0 ;
 655: LD_ADDR_EXP 2
 659: PUSH
 660: LD_INT 0
 662: ST_TO_ADDR
// def_omicron_ai = 1 ;
 663: LD_ADDR_EXP 21
 667: PUSH
 668: LD_INT 1
 670: ST_TO_ADDR
// def_arabian_ai = 1 ;
 671: LD_ADDR_EXP 22
 675: PUSH
 676: LD_INT 1
 678: ST_TO_ADDR
// def_kirov_ai = 1 ;
 679: LD_ADDR_EXP 24
 683: PUSH
 684: LD_INT 1
 686: ST_TO_ADDR
// def_beria_ai = 1 ;
 687: LD_ADDR_EXP 23
 691: PUSH
 692: LD_INT 1
 694: ST_TO_ADDR
// def_difficulty = 9 ;
 695: LD_ADDR_EXP 25
 699: PUSH
 700: LD_INT 9
 702: ST_TO_ADDR
// end ; is_depot := [ 0 , 1 , 2 ] [ def_base_level + 1 ] ;
 703: LD_ADDR_EXP 4
 707: PUSH
 708: LD_INT 0
 710: PUSH
 711: LD_INT 1
 713: PUSH
 714: LD_INT 2
 716: PUSH
 717: EMPTY
 718: LIST
 719: LIST
 720: LIST
 721: PUSH
 722: LD_EXP 43
 726: PUSH
 727: LD_INT 1
 729: PLUS
 730: ARRAY
 731: ST_TO_ADDR
// number_of_breastworks := [ 0 , 0 , 2 ] [ def_base_level + 1 ] ;
 732: LD_ADDR_EXP 5
 736: PUSH
 737: LD_INT 0
 739: PUSH
 740: LD_INT 0
 742: PUSH
 743: LD_INT 2
 745: PUSH
 746: EMPTY
 747: LIST
 748: LIST
 749: LIST
 750: PUSH
 751: LD_EXP 43
 755: PUSH
 756: LD_INT 1
 758: PLUS
 759: ARRAY
 760: ST_TO_ADDR
// number_of_people := [ 9 , 12 , 15 , 24 ] [ def_amount_of_people + 1 ] ;
 761: LD_ADDR_EXP 6
 765: PUSH
 766: LD_INT 9
 768: PUSH
 769: LD_INT 12
 771: PUSH
 772: LD_INT 15
 774: PUSH
 775: LD_INT 24
 777: PUSH
 778: EMPTY
 779: LIST
 780: LIST
 781: LIST
 782: LIST
 783: PUSH
 784: LD_EXP 44
 788: PUSH
 789: LD_INT 1
 791: PLUS
 792: ARRAY
 793: ST_TO_ADDR
// skill_level := [ 3 , 5 , 6 , 7 ] [ def_skill_level + 1 ] ;
 794: LD_ADDR_EXP 7
 798: PUSH
 799: LD_INT 3
 801: PUSH
 802: LD_INT 5
 804: PUSH
 805: LD_INT 6
 807: PUSH
 808: LD_INT 7
 810: PUSH
 811: EMPTY
 812: LIST
 813: LIST
 814: LIST
 815: LIST
 816: PUSH
 817: LD_EXP 45
 821: PUSH
 822: LD_INT 1
 824: PLUS
 825: ARRAY
 826: ST_TO_ADDR
// starting_resources := [ [ 0 , 0 , 0 ] , [ 30 , 30 , 0 ] , [ 50 , 50 , 0 ] , [ 80 , 60 , 0 ] ] [ def_starting_resources + 1 ] ;
 827: LD_ADDR_EXP 9
 831: PUSH
 832: LD_INT 0
 834: PUSH
 835: LD_INT 0
 837: PUSH
 838: LD_INT 0
 840: PUSH
 841: EMPTY
 842: LIST
 843: LIST
 844: LIST
 845: PUSH
 846: LD_INT 30
 848: PUSH
 849: LD_INT 30
 851: PUSH
 852: LD_INT 0
 854: PUSH
 855: EMPTY
 856: LIST
 857: LIST
 858: LIST
 859: PUSH
 860: LD_INT 50
 862: PUSH
 863: LD_INT 50
 865: PUSH
 866: LD_INT 0
 868: PUSH
 869: EMPTY
 870: LIST
 871: LIST
 872: LIST
 873: PUSH
 874: LD_INT 80
 876: PUSH
 877: LD_INT 60
 879: PUSH
 880: LD_INT 0
 882: PUSH
 883: EMPTY
 884: LIST
 885: LIST
 886: LIST
 887: PUSH
 888: EMPTY
 889: LIST
 890: LIST
 891: LIST
 892: LIST
 893: PUSH
 894: LD_EXP 46
 898: PUSH
 899: LD_INT 1
 901: PLUS
 902: ARRAY
 903: ST_TO_ADDR
// starting_crates := [ [ 10 ] , [ 7 , 14 ] , [ 6 , 12 , 18 ] , [ 5 , 10 , 15 , 20 ] ] [ def_starting_resources + 1 ] ;
 904: LD_ADDR_EXP 8
 908: PUSH
 909: LD_INT 10
 911: PUSH
 912: EMPTY
 913: LIST
 914: PUSH
 915: LD_INT 7
 917: PUSH
 918: LD_INT 14
 920: PUSH
 921: EMPTY
 922: LIST
 923: LIST
 924: PUSH
 925: LD_INT 6
 927: PUSH
 928: LD_INT 12
 930: PUSH
 931: LD_INT 18
 933: PUSH
 934: EMPTY
 935: LIST
 936: LIST
 937: LIST
 938: PUSH
 939: LD_INT 5
 941: PUSH
 942: LD_INT 10
 944: PUSH
 945: LD_INT 15
 947: PUSH
 948: LD_INT 20
 950: PUSH
 951: EMPTY
 952: LIST
 953: LIST
 954: LIST
 955: LIST
 956: PUSH
 957: EMPTY
 958: LIST
 959: LIST
 960: LIST
 961: LIST
 962: PUSH
 963: LD_EXP 46
 967: PUSH
 968: LD_INT 1
 970: PLUS
 971: ARRAY
 972: ST_TO_ADDR
// shipments_density := [ 150 , 125 , 100 , 50 ] [ def_shipments_density + 1 ] ;
 973: LD_ADDR_EXP 10
 977: PUSH
 978: LD_INT 150
 980: PUSH
 981: LD_INT 125
 983: PUSH
 984: LD_INT 100
 986: PUSH
 987: LD_INT 50
 989: PUSH
 990: EMPTY
 991: LIST
 992: LIST
 993: LIST
 994: LIST
 995: PUSH
 996: LD_EXP 47
1000: PUSH
1001: LD_INT 1
1003: PLUS
1004: ARRAY
1005: ST_TO_ADDR
// respawning_time_min := [ 0 0$0 , 5 5$00 , 3 3$0 ] [ def_people_respawning + 1 ] ;
1006: LD_ADDR_EXP 14
1010: PUSH
1011: LD_INT 0
1013: PUSH
1014: LD_INT 10500
1016: PUSH
1017: LD_INT 6300
1019: PUSH
1020: EMPTY
1021: LIST
1022: LIST
1023: LIST
1024: PUSH
1025: LD_EXP 49
1029: PUSH
1030: LD_INT 1
1032: PLUS
1033: ARRAY
1034: ST_TO_ADDR
// respawning_time_max := [ 0 0$0 , 15 15$00 , 5 5$0 ] [ def_people_respawning + 1 ] ;
1035: LD_ADDR_EXP 15
1039: PUSH
1040: LD_INT 0
1042: PUSH
1043: LD_INT 31500
1045: PUSH
1046: LD_INT 10500
1048: PUSH
1049: EMPTY
1050: LIST
1051: LIST
1052: LIST
1053: PUSH
1054: LD_EXP 49
1058: PUSH
1059: LD_INT 1
1061: PLUS
1062: ARRAY
1063: ST_TO_ADDR
// amount_of_apemen := [ 0 , 3 , 6 , 9 ] [ def_amount_of_apemen + 1 ] ;
1064: LD_ADDR_EXP 12
1068: PUSH
1069: LD_INT 0
1071: PUSH
1072: LD_INT 3
1074: PUSH
1075: LD_INT 6
1077: PUSH
1078: LD_INT 9
1080: PUSH
1081: EMPTY
1082: LIST
1083: LIST
1084: LIST
1085: LIST
1086: PUSH
1087: LD_EXP 3
1091: PUSH
1092: LD_INT 1
1094: PLUS
1095: ARRAY
1096: ST_TO_ADDR
// OmicronAI := [ 0 , 1 ] [ def_omicron_ai + 1 ] ;
1097: LD_ADDR_EXP 16
1101: PUSH
1102: LD_INT 0
1104: PUSH
1105: LD_INT 1
1107: PUSH
1108: EMPTY
1109: LIST
1110: LIST
1111: PUSH
1112: LD_EXP 21
1116: PUSH
1117: LD_INT 1
1119: PLUS
1120: ARRAY
1121: ST_TO_ADDR
// ArabianAI := [ 0 , 1 ] [ def_arabian_ai + 1 ] ;
1122: LD_ADDR_EXP 17
1126: PUSH
1127: LD_INT 0
1129: PUSH
1130: LD_INT 1
1132: PUSH
1133: EMPTY
1134: LIST
1135: LIST
1136: PUSH
1137: LD_EXP 22
1141: PUSH
1142: LD_INT 1
1144: PLUS
1145: ARRAY
1146: ST_TO_ADDR
// beriaai := [ 0 , 1 ] [ def_beria_ai + 1 ] ;
1147: LD_ADDR_EXP 18
1151: PUSH
1152: LD_INT 0
1154: PUSH
1155: LD_INT 1
1157: PUSH
1158: EMPTY
1159: LIST
1160: LIST
1161: PUSH
1162: LD_EXP 23
1166: PUSH
1167: LD_INT 1
1169: PLUS
1170: ARRAY
1171: ST_TO_ADDR
// kirovai := [ 0 , 1 ] [ def_kirov_ai + 1 ] ;
1172: LD_ADDR_EXP 19
1176: PUSH
1177: LD_INT 0
1179: PUSH
1180: LD_INT 1
1182: PUSH
1183: EMPTY
1184: LIST
1185: LIST
1186: PUSH
1187: LD_EXP 24
1191: PUSH
1192: LD_INT 1
1194: PLUS
1195: ARRAY
1196: ST_TO_ADDR
// difficultyC := [ 3 , 5 , 7 , 9 ] [ def_difficulty + 1 ] ;
1197: LD_ADDR_EXP 20
1201: PUSH
1202: LD_INT 3
1204: PUSH
1205: LD_INT 5
1207: PUSH
1208: LD_INT 7
1210: PUSH
1211: LD_INT 9
1213: PUSH
1214: EMPTY
1215: LIST
1216: LIST
1217: LIST
1218: LIST
1219: PUSH
1220: LD_EXP 25
1224: PUSH
1225: LD_INT 1
1227: PLUS
1228: ARRAY
1229: ST_TO_ADDR
// end ;
1230: LD_VAR 0 1
1234: RET
// function init_map ; var i , j ; begin
1235: LD_INT 0
1237: PPUSH
1238: PPUSH
1239: PPUSH
// CreateDepositXY ( 25 , 4 , mat_oil ) ;
1240: LD_INT 25
1242: PPUSH
1243: LD_INT 4
1245: PPUSH
1246: LD_INT 2
1248: PPUSH
1249: CALL_OW 62
// CreateDepositXY ( 127 , 4 , mat_oil ) ;
1253: LD_INT 127
1255: PPUSH
1256: LD_INT 4
1258: PPUSH
1259: LD_INT 2
1261: PPUSH
1262: CALL_OW 62
// CreateDepositXY ( 57 , 83 , mat_oil ) ;
1266: LD_INT 57
1268: PPUSH
1269: LD_INT 83
1271: PPUSH
1272: LD_INT 2
1274: PPUSH
1275: CALL_OW 62
// CreateDepositXY ( 65 , 86 , mat_oil ) ;
1279: LD_INT 65
1281: PPUSH
1282: LD_INT 86
1284: PPUSH
1285: LD_INT 2
1287: PPUSH
1288: CALL_OW 62
// CreateDepositXY ( 187 , 65 , mat_oil ) ;
1292: LD_INT 187
1294: PPUSH
1295: LD_INT 65
1297: PPUSH
1298: LD_INT 2
1300: PPUSH
1301: CALL_OW 62
// CreateDepositXY ( 196 , 81 , mat_oil ) ;
1305: LD_INT 196
1307: PPUSH
1308: LD_INT 81
1310: PPUSH
1311: LD_INT 2
1313: PPUSH
1314: CALL_OW 62
// depot_def := [ [ 6 , 5 , 2 ] , [ 134 , 6 , 3 ] , [ 99 , 78 , 0 ] , [ 150 , 78 , 3 ] ] ;
1318: LD_ADDR_EXP 33
1322: PUSH
1323: LD_INT 6
1325: PUSH
1326: LD_INT 5
1328: PUSH
1329: LD_INT 2
1331: PUSH
1332: EMPTY
1333: LIST
1334: LIST
1335: LIST
1336: PUSH
1337: LD_INT 134
1339: PUSH
1340: LD_INT 6
1342: PUSH
1343: LD_INT 3
1345: PUSH
1346: EMPTY
1347: LIST
1348: LIST
1349: LIST
1350: PUSH
1351: LD_INT 99
1353: PUSH
1354: LD_INT 78
1356: PUSH
1357: LD_INT 0
1359: PUSH
1360: EMPTY
1361: LIST
1362: LIST
1363: LIST
1364: PUSH
1365: LD_INT 150
1367: PUSH
1368: LD_INT 78
1370: PUSH
1371: LD_INT 3
1373: PUSH
1374: EMPTY
1375: LIST
1376: LIST
1377: LIST
1378: PUSH
1379: EMPTY
1380: LIST
1381: LIST
1382: LIST
1383: LIST
1384: ST_TO_ADDR
// for i in depot_def do
1385: LD_ADDR_VAR 0 2
1389: PUSH
1390: LD_EXP 33
1394: PUSH
1395: FOR_IN
1396: IFFALSE 1470
// start_def := start_def ^ [ [ ShiftX ( i [ 1 ] , i [ 3 ] , 10 ) , ShiftY ( i [ 2 ] , i [ 3 ] , 10 ) ] ] ;
1398: LD_ADDR_EXP 35
1402: PUSH
1403: LD_EXP 35
1407: PUSH
1408: LD_VAR 0 2
1412: PUSH
1413: LD_INT 1
1415: ARRAY
1416: PPUSH
1417: LD_VAR 0 2
1421: PUSH
1422: LD_INT 3
1424: ARRAY
1425: PPUSH
1426: LD_INT 10
1428: PPUSH
1429: CALL_OW 272
1433: PUSH
1434: LD_VAR 0 2
1438: PUSH
1439: LD_INT 2
1441: ARRAY
1442: PPUSH
1443: LD_VAR 0 2
1447: PUSH
1448: LD_INT 3
1450: ARRAY
1451: PPUSH
1452: LD_INT 10
1454: PPUSH
1455: CALL_OW 273
1459: PUSH
1460: EMPTY
1461: LIST
1462: LIST
1463: PUSH
1464: EMPTY
1465: LIST
1466: ADD
1467: ST_TO_ADDR
1468: GO 1395
1470: POP
1471: POP
// breastworks_def := [ [ [ 29 , 10 , 4 ] , [ 23 , 28 , 0 ] ] , [ [ 116 , 8 , 1 ] , [ 141 , 26 , 0 ] ] , [ [ 152 , 52 , 4 ] , [ 126 , 72 , 3 ] ] , [ [ 110 , 61 , 3 ] , [ 89 , 60 , 3 ] ] ] ;
1472: LD_ADDR_EXP 34
1476: PUSH
1477: LD_INT 29
1479: PUSH
1480: LD_INT 10
1482: PUSH
1483: LD_INT 4
1485: PUSH
1486: EMPTY
1487: LIST
1488: LIST
1489: LIST
1490: PUSH
1491: LD_INT 23
1493: PUSH
1494: LD_INT 28
1496: PUSH
1497: LD_INT 0
1499: PUSH
1500: EMPTY
1501: LIST
1502: LIST
1503: LIST
1504: PUSH
1505: EMPTY
1506: LIST
1507: LIST
1508: PUSH
1509: LD_INT 116
1511: PUSH
1512: LD_INT 8
1514: PUSH
1515: LD_INT 1
1517: PUSH
1518: EMPTY
1519: LIST
1520: LIST
1521: LIST
1522: PUSH
1523: LD_INT 141
1525: PUSH
1526: LD_INT 26
1528: PUSH
1529: LD_INT 0
1531: PUSH
1532: EMPTY
1533: LIST
1534: LIST
1535: LIST
1536: PUSH
1537: EMPTY
1538: LIST
1539: LIST
1540: PUSH
1541: LD_INT 152
1543: PUSH
1544: LD_INT 52
1546: PUSH
1547: LD_INT 4
1549: PUSH
1550: EMPTY
1551: LIST
1552: LIST
1553: LIST
1554: PUSH
1555: LD_INT 126
1557: PUSH
1558: LD_INT 72
1560: PUSH
1561: LD_INT 3
1563: PUSH
1564: EMPTY
1565: LIST
1566: LIST
1567: LIST
1568: PUSH
1569: EMPTY
1570: LIST
1571: LIST
1572: PUSH
1573: LD_INT 110
1575: PUSH
1576: LD_INT 61
1578: PUSH
1579: LD_INT 3
1581: PUSH
1582: EMPTY
1583: LIST
1584: LIST
1585: LIST
1586: PUSH
1587: LD_INT 89
1589: PUSH
1590: LD_INT 60
1592: PUSH
1593: LD_INT 3
1595: PUSH
1596: EMPTY
1597: LIST
1598: LIST
1599: LIST
1600: PUSH
1601: EMPTY
1602: LIST
1603: LIST
1604: PUSH
1605: EMPTY
1606: LIST
1607: LIST
1608: LIST
1609: LIST
1610: ST_TO_ADDR
// end ;
1611: LD_VAR 0 1
1615: RET
// function set_shared_visions_and_alliances ; var i , j ; begin
1616: LD_INT 0
1618: PPUSH
1619: PPUSH
1620: PPUSH
// if not Team_Game then
1621: LD_EXP 30
1625: NOT
1626: IFFALSE 1724
// begin for i = 1 to 8 do
1628: LD_ADDR_VAR 0 2
1632: PUSH
1633: DOUBLE
1634: LD_INT 1
1636: DEC
1637: ST_TO_ADDR
1638: LD_INT 8
1640: PUSH
1641: FOR_TO
1642: IFFALSE 1720
// for j = 1 to 8 do
1644: LD_ADDR_VAR 0 3
1648: PUSH
1649: DOUBLE
1650: LD_INT 1
1652: DEC
1653: ST_TO_ADDR
1654: LD_INT 8
1656: PUSH
1657: FOR_TO
1658: IFFALSE 1716
// if i <> j then
1660: LD_VAR 0 2
1664: PUSH
1665: LD_VAR 0 3
1669: NONEQUAL
1670: IFFALSE 1694
// SetAttitude ( i , j , att_enemy , true ) else
1672: LD_VAR 0 2
1676: PPUSH
1677: LD_VAR 0 3
1681: PPUSH
1682: LD_INT 2
1684: PPUSH
1685: LD_INT 1
1687: PPUSH
1688: CALL_OW 80
1692: GO 1714
// SetAttitude ( i , j , att_friend , true ) ;
1694: LD_VAR 0 2
1698: PPUSH
1699: LD_VAR 0 3
1703: PPUSH
1704: LD_INT 1
1706: PPUSH
1707: LD_INT 1
1709: PPUSH
1710: CALL_OW 80
1714: GO 1657
1716: POP
1717: POP
1718: GO 1641
1720: POP
1721: POP
// end else
1722: GO 1899
// begin if def_shared_vision then
1724: LD_EXP 48
1728: IFFALSE 1793
// begin for i in Teams do
1730: LD_ADDR_VAR 0 2
1734: PUSH
1735: LD_EXP 27
1739: PUSH
1740: FOR_IN
1741: IFFALSE 1791
// for j = 2 to i do
1743: LD_ADDR_VAR 0 3
1747: PUSH
1748: DOUBLE
1749: LD_INT 2
1751: DEC
1752: ST_TO_ADDR
1753: LD_VAR 0 2
1757: PUSH
1758: FOR_TO
1759: IFFALSE 1787
// ChangeSideFog ( i [ j ] , i [ 1 ] ) ;
1761: LD_VAR 0 2
1765: PUSH
1766: LD_VAR 0 3
1770: ARRAY
1771: PPUSH
1772: LD_VAR 0 2
1776: PUSH
1777: LD_INT 1
1779: ARRAY
1780: PPUSH
1781: CALL_OW 343
1785: GO 1758
1787: POP
1788: POP
1789: GO 1740
1791: POP
1792: POP
// end ; for i = 1 to 8 do
1793: LD_ADDR_VAR 0 2
1797: PUSH
1798: DOUBLE
1799: LD_INT 1
1801: DEC
1802: ST_TO_ADDR
1803: LD_INT 8
1805: PUSH
1806: FOR_TO
1807: IFFALSE 1897
// for j = 1 to 8 do
1809: LD_ADDR_VAR 0 3
1813: PUSH
1814: DOUBLE
1815: LD_INT 1
1817: DEC
1818: ST_TO_ADDR
1819: LD_INT 8
1821: PUSH
1822: FOR_TO
1823: IFFALSE 1893
// if Side_Teams [ i ] = Side_Teams [ j ] then
1825: LD_EXP 26
1829: PUSH
1830: LD_VAR 0 2
1834: ARRAY
1835: PUSH
1836: LD_EXP 26
1840: PUSH
1841: LD_VAR 0 3
1845: ARRAY
1846: EQUAL
1847: IFFALSE 1871
// SetAttitude ( i , j , att_friend , true ) else
1849: LD_VAR 0 2
1853: PPUSH
1854: LD_VAR 0 3
1858: PPUSH
1859: LD_INT 1
1861: PPUSH
1862: LD_INT 1
1864: PPUSH
1865: CALL_OW 80
1869: GO 1891
// SetAttitude ( i , j , att_enemy , true ) ;
1871: LD_VAR 0 2
1875: PPUSH
1876: LD_VAR 0 3
1880: PPUSH
1881: LD_INT 2
1883: PPUSH
1884: LD_INT 1
1886: PPUSH
1887: CALL_OW 80
1891: GO 1822
1893: POP
1894: POP
1895: GO 1806
1897: POP
1898: POP
// end ; end ;
1899: LD_VAR 0 1
1903: RET
// function gall ; var gal ; begin
1904: LD_INT 0
1906: PPUSH
1907: PPUSH
// gal := [ [ us , 16 , sex_male , VanHouten ] , [ heike , 1 , sex_female , Heike ] , [ general , 1 , sex_male , Platonov ] , [ ru , 8 , sex_male , Kurin ] ] ;
1908: LD_ADDR_VAR 0 2
1912: PUSH
1913: LD_STRING us
1915: PUSH
1916: LD_INT 16
1918: PUSH
1919: LD_INT 1
1921: PUSH
1922: LD_STRING VanHouten
1924: PUSH
1925: EMPTY
1926: LIST
1927: LIST
1928: LIST
1929: LIST
1930: PUSH
1931: LD_STRING heike
1933: PUSH
1934: LD_INT 1
1936: PUSH
1937: LD_INT 2
1939: PUSH
1940: LD_STRING Heike
1942: PUSH
1943: EMPTY
1944: LIST
1945: LIST
1946: LIST
1947: LIST
1948: PUSH
1949: LD_STRING general
1951: PUSH
1952: LD_INT 1
1954: PUSH
1955: LD_INT 1
1957: PUSH
1958: LD_STRING Platonov
1960: PUSH
1961: EMPTY
1962: LIST
1963: LIST
1964: LIST
1965: LIST
1966: PUSH
1967: LD_STRING ru
1969: PUSH
1970: LD_INT 8
1972: PUSH
1973: LD_INT 1
1975: PUSH
1976: LD_STRING Kurin
1978: PUSH
1979: EMPTY
1980: LIST
1981: LIST
1982: LIST
1983: LIST
1984: PUSH
1985: EMPTY
1986: LIST
1987: LIST
1988: LIST
1989: LIST
1990: ST_TO_ADDR
// result := gal ;
1991: LD_ADDR_VAR 0 1
1995: PUSH
1996: LD_VAR 0 2
2000: ST_TO_ADDR
// end ;
2001: LD_VAR 0 1
2005: RET
// function prepare_people ( count , cl , x , y , r ) ; var i , j , un , k , c ; begin
2006: LD_INT 0
2008: PPUSH
2009: PPUSH
2010: PPUSH
2011: PPUSH
2012: PPUSH
2013: PPUSH
// result := [ ] ;
2014: LD_ADDR_VAR 0 6
2018: PUSH
2019: EMPTY
2020: ST_TO_ADDR
// for i := 1 to count do
2021: LD_ADDR_VAR 0 7
2025: PUSH
2026: DOUBLE
2027: LD_INT 1
2029: DEC
2030: ST_TO_ADDR
2031: LD_VAR 0 1
2035: PUSH
2036: FOR_TO
2037: IFFALSE 2544
// begin uc_direction := Rand ( 0 , 5 ) ;
2039: LD_ADDR_OWVAR 24
2043: PUSH
2044: LD_INT 0
2046: PPUSH
2047: LD_INT 5
2049: PPUSH
2050: CALL_OW 12
2054: ST_TO_ADDR
// if commander then
2055: LD_LOC 1
2059: IFFALSE 2271
// begin commander := false ;
2061: LD_ADDR_LOC 1
2065: PUSH
2066: LD_INT 0
2068: ST_TO_ADDR
// if Multiplayer then
2069: LD_OWVAR 4
2073: IFFALSE 2269
// begin for c = 1 to 8 do
2075: LD_ADDR_VAR 0 11
2079: PUSH
2080: DOUBLE
2081: LD_INT 1
2083: DEC
2084: ST_TO_ADDR
2085: LD_INT 8
2087: PUSH
2088: FOR_TO
2089: IFFALSE 2267
// begin if cSides [ c ] > 0 then
2091: LD_EXP 31
2095: PUSH
2096: LD_VAR 0 11
2100: ARRAY
2101: PUSH
2102: LD_INT 0
2104: GREATER
2105: IFFALSE 2265
// begin k := cSides [ c ] ;
2107: LD_ADDR_VAR 0 10
2111: PUSH
2112: LD_EXP 31
2116: PUSH
2117: LD_VAR 0 11
2121: ARRAY
2122: ST_TO_ADDR
// PrepareHuman ( Rand ( 1 , 2 ) , cl , skill_level + 2 ) ;
2123: LD_INT 1
2125: PPUSH
2126: LD_INT 2
2128: PPUSH
2129: CALL_OW 12
2133: PPUSH
2134: LD_VAR 0 2
2138: PPUSH
2139: LD_EXP 7
2143: PUSH
2144: LD_INT 2
2146: PLUS
2147: PPUSH
2148: CALL_OW 380
// hc_gallery := gall [ k ] [ 1 ] ;
2152: LD_ADDR_OWVAR 33
2156: PUSH
2157: CALL 1904 0 0
2161: PUSH
2162: LD_VAR 0 10
2166: ARRAY
2167: PUSH
2168: LD_INT 1
2170: ARRAY
2171: ST_TO_ADDR
// hc_face_number := gall [ k ] [ 2 ] ;
2172: LD_ADDR_OWVAR 34
2176: PUSH
2177: CALL 1904 0 0
2181: PUSH
2182: LD_VAR 0 10
2186: ARRAY
2187: PUSH
2188: LD_INT 2
2190: ARRAY
2191: ST_TO_ADDR
// hc_sex := gall [ k ] [ 3 ] ;
2192: LD_ADDR_OWVAR 27
2196: PUSH
2197: CALL 1904 0 0
2201: PUSH
2202: LD_VAR 0 10
2206: ARRAY
2207: PUSH
2208: LD_INT 3
2210: ARRAY
2211: ST_TO_ADDR
// hc_name := gall [ k ] [ 4 ] ;
2212: LD_ADDR_OWVAR 26
2216: PUSH
2217: CALL 1904 0 0
2221: PUSH
2222: LD_VAR 0 10
2226: ARRAY
2227: PUSH
2228: LD_INT 4
2230: ARRAY
2231: ST_TO_ADDR
// hc_importance := 105 ;
2232: LD_ADDR_OWVAR 32
2236: PUSH
2237: LD_INT 105
2239: ST_TO_ADDR
// cSides := Replace ( cSides , c , 0 ) ;
2240: LD_ADDR_EXP 31
2244: PUSH
2245: LD_EXP 31
2249: PPUSH
2250: LD_VAR 0 11
2254: PPUSH
2255: LD_INT 0
2257: PPUSH
2258: CALL_OW 1
2262: ST_TO_ADDR
// break ;
2263: GO 2267
// end ; end ;
2265: GO 2088
2267: POP
2268: POP
// end ; end else
2269: GO 2342
// begin hc_gallery :=  ;
2271: LD_ADDR_OWVAR 33
2275: PUSH
2276: LD_STRING 
2278: ST_TO_ADDR
// hc_name :=  ;
2279: LD_ADDR_OWVAR 26
2283: PUSH
2284: LD_STRING 
2286: ST_TO_ADDR
// hc_importance := 0 ;
2287: LD_ADDR_OWVAR 32
2291: PUSH
2292: LD_INT 0
2294: ST_TO_ADDR
// PrepareHuman ( rand ( 1 , 2 ) , cl , skill_level ) ;
2295: LD_INT 1
2297: PPUSH
2298: LD_INT 2
2300: PPUSH
2301: CALL_OW 12
2305: PPUSH
2306: LD_VAR 0 2
2310: PPUSH
2311: LD_EXP 7
2315: PPUSH
2316: CALL_OW 380
// if Multiplayer then
2320: LD_OWVAR 4
2324: IFFALSE 2342
// begin hc_gallery :=  ;
2326: LD_ADDR_OWVAR 33
2330: PUSH
2331: LD_STRING 
2333: ST_TO_ADDR
// hc_face_number := 0 ;
2334: LD_ADDR_OWVAR 34
2338: PUSH
2339: LD_INT 0
2341: ST_TO_ADDR
// end ; end ; un := CreateHuman ;
2342: LD_ADDR_VAR 0 9
2346: PUSH
2347: CALL_OW 44
2351: ST_TO_ADDR
// if global_defined then
2352: LD_LOC 3
2356: IFFALSE 2496
// begin if ( cl = class_soldier ) then
2358: LD_VAR 0 2
2362: PUSH
2363: LD_INT 1
2365: EQUAL
2366: IFFALSE 2386
// j := i + soldiers_created else
2368: LD_ADDR_VAR 0 8
2372: PUSH
2373: LD_VAR 0 7
2377: PUSH
2378: LD_LOC 4
2382: PLUS
2383: ST_TO_ADDR
2384: GO 2396
// j := i ;
2386: LD_ADDR_VAR 0 8
2390: PUSH
2391: LD_VAR 0 7
2395: ST_TO_ADDR
// CopySkills ( global_units [ cl ] [ j ] , un ) ;
2396: LD_LOC 2
2400: PUSH
2401: LD_VAR 0 2
2405: ARRAY
2406: PUSH
2407: LD_VAR 0 8
2411: ARRAY
2412: PPUSH
2413: LD_VAR 0 9
2417: PPUSH
2418: CALL_OW 510
// SetAttr ( un , attr_speed , GetAttr ( global_units [ cl ] [ j ] , attr_speed ) ) ;
2422: LD_VAR 0 9
2426: PPUSH
2427: LD_INT 2
2429: PPUSH
2430: LD_LOC 2
2434: PUSH
2435: LD_VAR 0 2
2439: ARRAY
2440: PUSH
2441: LD_VAR 0 8
2445: ARRAY
2446: PPUSH
2447: LD_INT 2
2449: PPUSH
2450: CALL_OW 260
2454: PPUSH
2455: CALL_OW 239
// SetAttr ( un , attr_stamina , GetAttr ( global_units [ cl ] [ j ] , attr_stamina ) ) ;
2459: LD_VAR 0 9
2463: PPUSH
2464: LD_INT 1
2466: PPUSH
2467: LD_LOC 2
2471: PUSH
2472: LD_VAR 0 2
2476: ARRAY
2477: PUSH
2478: LD_VAR 0 8
2482: ARRAY
2483: PPUSH
2484: LD_INT 1
2486: PPUSH
2487: CALL_OW 260
2491: PPUSH
2492: CALL_OW 239
// end ; PlaceUnitXYR ( un , x , y , r , false ) ;
2496: LD_VAR 0 9
2500: PPUSH
2501: LD_VAR 0 3
2505: PPUSH
2506: LD_VAR 0 4
2510: PPUSH
2511: LD_VAR 0 5
2515: PPUSH
2516: LD_INT 0
2518: PPUSH
2519: CALL_OW 50
// result := result ^ [ un ] ;
2523: LD_ADDR_VAR 0 6
2527: PUSH
2528: LD_VAR 0 6
2532: PUSH
2533: LD_VAR 0 9
2537: PUSH
2538: EMPTY
2539: LIST
2540: ADD
2541: ST_TO_ADDR
// end ;
2542: GO 2036
2544: POP
2545: POP
// if not global_defined then
2546: LD_LOC 3
2550: NOT
2551: IFFALSE 2629
// if ( global_units >= cl ) then
2553: LD_LOC 2
2557: PUSH
2558: LD_VAR 0 2
2562: GREATEREQUAL
2563: IFFALSE 2604
// global_units := Replace ( global_units , cl , global_units [ cl ] ^ result ) else
2565: LD_ADDR_LOC 2
2569: PUSH
2570: LD_LOC 2
2574: PPUSH
2575: LD_VAR 0 2
2579: PPUSH
2580: LD_LOC 2
2584: PUSH
2585: LD_VAR 0 2
2589: ARRAY
2590: PUSH
2591: LD_VAR 0 6
2595: ADD
2596: PPUSH
2597: CALL_OW 1
2601: ST_TO_ADDR
2602: GO 2629
// global_units := Replace ( global_units , cl , result ) ;
2604: LD_ADDR_LOC 2
2608: PUSH
2609: LD_LOC 2
2613: PPUSH
2614: LD_VAR 0 2
2618: PPUSH
2619: LD_VAR 0 6
2623: PPUSH
2624: CALL_OW 1
2628: ST_TO_ADDR
// end ;
2629: LD_VAR 0 6
2633: RET
// function prepare_side ( side ) ; var pos , x , y , dir , i , r , sol , br , dep ; begin
2634: LD_INT 0
2636: PPUSH
2637: PPUSH
2638: PPUSH
2639: PPUSH
2640: PPUSH
2641: PPUSH
2642: PPUSH
2643: PPUSH
2644: PPUSH
2645: PPUSH
// pos := Side_Positions [ side ] ;
2646: LD_ADDR_VAR 0 3
2650: PUSH
2651: LD_EXP 28
2655: PUSH
2656: LD_VAR 0 1
2660: ARRAY
2661: ST_TO_ADDR
// uc_nation := Side_Nations [ side ] ;
2662: LD_ADDR_OWVAR 21
2666: PUSH
2667: LD_EXP 29
2671: PUSH
2672: LD_VAR 0 1
2676: ARRAY
2677: ST_TO_ADDR
// uc_side := side ;
2678: LD_ADDR_OWVAR 20
2682: PUSH
2683: LD_VAR 0 1
2687: ST_TO_ADDR
// x := depot_def [ pos ] [ 1 ] ;
2688: LD_ADDR_VAR 0 4
2692: PUSH
2693: LD_EXP 33
2697: PUSH
2698: LD_VAR 0 3
2702: ARRAY
2703: PUSH
2704: LD_INT 1
2706: ARRAY
2707: ST_TO_ADDR
// y := depot_def [ pos ] [ 2 ] ;
2708: LD_ADDR_VAR 0 5
2712: PUSH
2713: LD_EXP 33
2717: PUSH
2718: LD_VAR 0 3
2722: ARRAY
2723: PUSH
2724: LD_INT 2
2726: ARRAY
2727: ST_TO_ADDR
// dir := depot_def [ pos ] [ 3 ] ;
2728: LD_ADDR_VAR 0 6
2732: PUSH
2733: LD_EXP 33
2737: PUSH
2738: LD_VAR 0 3
2742: ARRAY
2743: PUSH
2744: LD_INT 3
2746: ARRAY
2747: ST_TO_ADDR
// if is_depot then
2748: LD_EXP 4
2752: IFFALSE 2859
// begin bc_type = b_depot ;
2754: LD_ADDR_OWVAR 42
2758: PUSH
2759: LD_INT 0
2761: ST_TO_ADDR
// dep := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
2762: LD_ADDR_VAR 0 11
2766: PUSH
2767: LD_VAR 0 4
2771: PPUSH
2772: LD_VAR 0 5
2776: PPUSH
2777: LD_VAR 0 6
2781: PPUSH
2782: CALL_OW 47
2786: ST_TO_ADDR
// SetBName ( dep , @ & side ) ;
2787: LD_VAR 0 11
2791: PPUSH
2792: LD_STRING @
2794: PUSH
2795: LD_VAR 0 1
2799: STR
2800: PPUSH
2801: CALL_OW 500
// SetResourceType ( GetBase ( dep ) , mat_cans , starting_resources [ mat_cans ] ) ;
2805: LD_VAR 0 11
2809: PPUSH
2810: CALL_OW 274
2814: PPUSH
2815: LD_INT 1
2817: PPUSH
2818: LD_EXP 9
2822: PUSH
2823: LD_INT 1
2825: ARRAY
2826: PPUSH
2827: CALL_OW 277
// SetResourceType ( GetBase ( dep ) , mat_oil , starting_resources [ mat_oil ] ) ;
2831: LD_VAR 0 11
2835: PPUSH
2836: CALL_OW 274
2840: PPUSH
2841: LD_INT 2
2843: PPUSH
2844: LD_EXP 9
2848: PUSH
2849: LD_INT 2
2851: ARRAY
2852: PPUSH
2853: CALL_OW 277
// end else
2857: GO 3003
// begin for i := 1 to 3 do
2859: LD_ADDR_VAR 0 7
2863: PUSH
2864: DOUBLE
2865: LD_INT 1
2867: DEC
2868: ST_TO_ADDR
2869: LD_INT 3
2871: PUSH
2872: FOR_TO
2873: IFFALSE 3001
// begin r := starting_resources [ i ] ;
2875: LD_ADDR_VAR 0 8
2879: PUSH
2880: LD_EXP 9
2884: PUSH
2885: LD_VAR 0 7
2889: ARRAY
2890: ST_TO_ADDR
// while r >= 10 do
2891: LD_VAR 0 8
2895: PUSH
2896: LD_INT 10
2898: GREATEREQUAL
2899: IFFALSE 2999
// if r > 50 then
2901: LD_VAR 0 8
2905: PUSH
2906: LD_INT 50
2908: GREATER
2909: IFFALSE 2955
// begin CreateResourcesXYR ( i , 5 , x , y , 4 , false ) ;
2911: LD_VAR 0 7
2915: PPUSH
2916: LD_INT 5
2918: PPUSH
2919: LD_VAR 0 4
2923: PPUSH
2924: LD_VAR 0 5
2928: PPUSH
2929: LD_INT 4
2931: PPUSH
2932: LD_INT 0
2934: PPUSH
2935: CALL_OW 60
// r := r - 50 ;
2939: LD_ADDR_VAR 0 8
2943: PUSH
2944: LD_VAR 0 8
2948: PUSH
2949: LD_INT 50
2951: MINUS
2952: ST_TO_ADDR
// end else
2953: GO 2997
// begin CreateResourcesXYR ( i , r div 10 , x , y , 4 , false ) ;
2955: LD_VAR 0 7
2959: PPUSH
2960: LD_VAR 0 8
2964: PUSH
2965: LD_INT 10
2967: DIV
2968: PPUSH
2969: LD_VAR 0 4
2973: PPUSH
2974: LD_VAR 0 5
2978: PPUSH
2979: LD_INT 4
2981: PPUSH
2982: LD_INT 0
2984: PPUSH
2985: CALL_OW 60
// r := 0 ;
2989: LD_ADDR_VAR 0 8
2993: PUSH
2994: LD_INT 0
2996: ST_TO_ADDR
// end ;
2997: GO 2891
// end ;
2999: GO 2872
3001: POP
3002: POP
// end ; for r in starting_crates do
3003: LD_ADDR_VAR 0 8
3007: PUSH
3008: LD_EXP 8
3012: PUSH
3013: FOR_IN
3014: IFFALSE 3046
// CreateResourcesXYR ( mat_cans , 5 , x , y , r , false ) ;
3016: LD_INT 1
3018: PPUSH
3019: LD_INT 5
3021: PPUSH
3022: LD_VAR 0 4
3026: PPUSH
3027: LD_VAR 0 5
3031: PPUSH
3032: LD_VAR 0 8
3036: PPUSH
3037: LD_INT 0
3039: PPUSH
3040: CALL_OW 60
3044: GO 3013
3046: POP
3047: POP
// commander := true ;
3048: LD_ADDR_LOC 1
3052: PUSH
3053: LD_INT 1
3055: ST_TO_ADDR
// soldiers_created := 0 ;
3056: LD_ADDR_LOC 4
3060: PUSH
3061: LD_INT 0
3063: ST_TO_ADDR
// for i := 1 to number_of_breastworks do
3064: LD_ADDR_VAR 0 7
3068: PUSH
3069: DOUBLE
3070: LD_INT 1
3072: DEC
3073: ST_TO_ADDR
3074: LD_EXP 5
3078: PUSH
3079: FOR_TO
3080: IFFALSE 3302
// begin x := breastworks_def [ pos ] [ i ] [ 1 ] ;
3082: LD_ADDR_VAR 0 4
3086: PUSH
3087: LD_EXP 34
3091: PUSH
3092: LD_VAR 0 3
3096: ARRAY
3097: PUSH
3098: LD_VAR 0 7
3102: ARRAY
3103: PUSH
3104: LD_INT 1
3106: ARRAY
3107: ST_TO_ADDR
// y := breastworks_def [ pos ] [ i ] [ 2 ] ;
3108: LD_ADDR_VAR 0 5
3112: PUSH
3113: LD_EXP 34
3117: PUSH
3118: LD_VAR 0 3
3122: ARRAY
3123: PUSH
3124: LD_VAR 0 7
3128: ARRAY
3129: PUSH
3130: LD_INT 2
3132: ARRAY
3133: ST_TO_ADDR
// dir := breastworks_def [ pos ] [ i ] [ 3 ] ;
3134: LD_ADDR_VAR 0 6
3138: PUSH
3139: LD_EXP 34
3143: PUSH
3144: LD_VAR 0 3
3148: ARRAY
3149: PUSH
3150: LD_VAR 0 7
3154: ARRAY
3155: PUSH
3156: LD_INT 3
3158: ARRAY
3159: ST_TO_ADDR
// bc_type := b_breastwork ;
3160: LD_ADDR_OWVAR 42
3164: PUSH
3165: LD_INT 31
3167: ST_TO_ADDR
// br := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
3168: LD_ADDR_VAR 0 10
3172: PUSH
3173: LD_VAR 0 4
3177: PPUSH
3178: LD_VAR 0 5
3182: PPUSH
3183: LD_VAR 0 6
3187: PPUSH
3188: CALL_OW 47
3192: ST_TO_ADDR
// x := ShiftX ( x , dir , 2 ) ;
3193: LD_ADDR_VAR 0 4
3197: PUSH
3198: LD_VAR 0 4
3202: PPUSH
3203: LD_VAR 0 6
3207: PPUSH
3208: LD_INT 2
3210: PPUSH
3211: CALL_OW 272
3215: ST_TO_ADDR
// y := ShiftY ( y , dir , 2 ) ;
3216: LD_ADDR_VAR 0 5
3220: PUSH
3221: LD_VAR 0 5
3225: PPUSH
3226: LD_VAR 0 6
3230: PPUSH
3231: LD_INT 2
3233: PPUSH
3234: CALL_OW 273
3238: ST_TO_ADDR
// sol := prepare_people ( 1 , class_soldier , x , y , 0 ) [ 1 ] ;
3239: LD_ADDR_VAR 0 9
3243: PUSH
3244: LD_INT 1
3246: PPUSH
3247: LD_INT 1
3249: PPUSH
3250: LD_VAR 0 4
3254: PPUSH
3255: LD_VAR 0 5
3259: PPUSH
3260: LD_INT 0
3262: PPUSH
3263: CALL 2006 0 5
3267: PUSH
3268: LD_INT 1
3270: ARRAY
3271: ST_TO_ADDR
// soldiers_created := soldiers_created + 1 ;
3272: LD_ADDR_LOC 4
3276: PUSH
3277: LD_LOC 4
3281: PUSH
3282: LD_INT 1
3284: PLUS
3285: ST_TO_ADDR
// ComEnterUnit ( sol , br ) ;
3286: LD_VAR 0 9
3290: PPUSH
3291: LD_VAR 0 10
3295: PPUSH
3296: CALL_OW 120
// end ;
3300: GO 3079
3302: POP
3303: POP
// x := start_def [ pos ] [ 1 ] ;
3304: LD_ADDR_VAR 0 4
3308: PUSH
3309: LD_EXP 35
3313: PUSH
3314: LD_VAR 0 3
3318: ARRAY
3319: PUSH
3320: LD_INT 1
3322: ARRAY
3323: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
3324: LD_ADDR_VAR 0 5
3328: PUSH
3329: LD_EXP 35
3333: PUSH
3334: LD_VAR 0 3
3338: ARRAY
3339: PUSH
3340: LD_INT 2
3342: ARRAY
3343: ST_TO_ADDR
// prepare_people ( nsol - number_of_breastworks , class_soldier , x , y , 5 ) ;
3344: LD_LOC 8
3348: PUSH
3349: LD_EXP 5
3353: MINUS
3354: PPUSH
3355: LD_INT 1
3357: PPUSH
3358: LD_VAR 0 4
3362: PPUSH
3363: LD_VAR 0 5
3367: PPUSH
3368: LD_INT 5
3370: PPUSH
3371: CALL 2006 0 5
// prepare_people ( neng , class_engineer , x , y , 5 ) ;
3375: LD_LOC 5
3379: PPUSH
3380: LD_INT 2
3382: PPUSH
3383: LD_VAR 0 4
3387: PPUSH
3388: LD_VAR 0 5
3392: PPUSH
3393: LD_INT 5
3395: PPUSH
3396: CALL 2006 0 5
// prepare_people ( nmech , class_mechanic , x , y , 5 ) ;
3400: LD_LOC 7
3404: PPUSH
3405: LD_INT 3
3407: PPUSH
3408: LD_VAR 0 4
3412: PPUSH
3413: LD_VAR 0 5
3417: PPUSH
3418: LD_INT 5
3420: PPUSH
3421: CALL 2006 0 5
// prepare_people ( nsci , class_scientistic , x , y , 5 ) ;
3425: LD_LOC 6
3429: PPUSH
3430: LD_INT 4
3432: PPUSH
3433: LD_VAR 0 4
3437: PPUSH
3438: LD_VAR 0 5
3442: PPUSH
3443: LD_INT 5
3445: PPUSH
3446: CALL 2006 0 5
// global_defined := true ;
3450: LD_ADDR_LOC 3
3454: PUSH
3455: LD_INT 1
3457: ST_TO_ADDR
// end ;
3458: LD_VAR 0 2
3462: RET
// function prepare_sides ; var i ; begin
3463: LD_INT 0
3465: PPUSH
3466: PPUSH
// global_units := [ ] ;
3467: LD_ADDR_LOC 2
3471: PUSH
3472: EMPTY
3473: ST_TO_ADDR
// global_defined := false ;
3474: LD_ADDR_LOC 3
3478: PUSH
3479: LD_INT 0
3481: ST_TO_ADDR
// CountClassMembers ;
3482: CALL 3532 0 0
// for i := 1 to 8 do
3486: LD_ADDR_VAR 0 2
3490: PUSH
3491: DOUBLE
3492: LD_INT 1
3494: DEC
3495: ST_TO_ADDR
3496: LD_INT 8
3498: PUSH
3499: FOR_TO
3500: IFFALSE 3525
// if Side_Positions [ i ] then
3502: LD_EXP 28
3506: PUSH
3507: LD_VAR 0 2
3511: ARRAY
3512: IFFALSE 3523
// prepare_side ( i ) ;
3514: LD_VAR 0 2
3518: PPUSH
3519: CALL 2634 0 1
3523: GO 3499
3525: POP
3526: POP
// end ;
3527: LD_VAR 0 1
3531: RET
// function CountClassMembers ; var Mode ; begin
3532: LD_INT 0
3534: PPUSH
3535: PPUSH
// Mode := 1 ;
3536: LD_ADDR_VAR 0 2
3540: PUSH
3541: LD_INT 1
3543: ST_TO_ADDR
// neng := number_of_people ;
3544: LD_ADDR_LOC 5
3548: PUSH
3549: LD_EXP 6
3553: ST_TO_ADDR
// nsol := neng div [ 4 , 3 ] [ Mode ] ;
3554: LD_ADDR_LOC 8
3558: PUSH
3559: LD_LOC 5
3563: PUSH
3564: LD_INT 4
3566: PUSH
3567: LD_INT 3
3569: PUSH
3570: EMPTY
3571: LIST
3572: LIST
3573: PUSH
3574: LD_VAR 0 2
3578: ARRAY
3579: DIV
3580: ST_TO_ADDR
// if ( nsol < number_of_breastworks ) then
3581: LD_LOC 8
3585: PUSH
3586: LD_EXP 5
3590: LESS
3591: IFFALSE 3603
// nsol := number_of_breastworks ;
3593: LD_ADDR_LOC 8
3597: PUSH
3598: LD_EXP 5
3602: ST_TO_ADDR
// neng := neng - nsol ;
3603: LD_ADDR_LOC 5
3607: PUSH
3608: LD_LOC 5
3612: PUSH
3613: LD_LOC 8
3617: MINUS
3618: ST_TO_ADDR
// nsci := neng div [ 3 , 2 ] [ Mode ] ;
3619: LD_ADDR_LOC 6
3623: PUSH
3624: LD_LOC 5
3628: PUSH
3629: LD_INT 3
3631: PUSH
3632: LD_INT 2
3634: PUSH
3635: EMPTY
3636: LIST
3637: LIST
3638: PUSH
3639: LD_VAR 0 2
3643: ARRAY
3644: DIV
3645: ST_TO_ADDR
// if ( nsci < 1 ) then
3646: LD_LOC 6
3650: PUSH
3651: LD_INT 1
3653: LESS
3654: IFFALSE 3664
// nsci := 1 ;
3656: LD_ADDR_LOC 6
3660: PUSH
3661: LD_INT 1
3663: ST_TO_ADDR
// neng := neng - nsci ;
3664: LD_ADDR_LOC 5
3668: PUSH
3669: LD_LOC 5
3673: PUSH
3674: LD_LOC 6
3678: MINUS
3679: ST_TO_ADDR
// nmech := [ neng div 2 , 0 ] [ Mode ] ;
3680: LD_ADDR_LOC 7
3684: PUSH
3685: LD_LOC 5
3689: PUSH
3690: LD_INT 2
3692: DIV
3693: PUSH
3694: LD_INT 0
3696: PUSH
3697: EMPTY
3698: LIST
3699: LIST
3700: PUSH
3701: LD_VAR 0 2
3705: ARRAY
3706: ST_TO_ADDR
// neng := neng - nmech ;
3707: LD_ADDR_LOC 5
3711: PUSH
3712: LD_LOC 5
3716: PUSH
3717: LD_LOC 7
3721: MINUS
3722: ST_TO_ADDR
// if ( neng < 1 ) then
3723: LD_LOC 5
3727: PUSH
3728: LD_INT 1
3730: LESS
3731: IFFALSE 3741
// neng := 1 ;
3733: LD_ADDR_LOC 5
3737: PUSH
3738: LD_INT 1
3740: ST_TO_ADDR
// end ;
3741: LD_VAR 0 1
3745: RET
// starting var i ; begin enable_human_prediction := true ;
3746: LD_ADDR_OWVAR 51
3750: PUSH
3751: LD_INT 1
3753: ST_TO_ADDR
// mp_selectmsg := true ;
3754: LD_ADDR_OWVAR 13
3758: PUSH
3759: LD_INT 1
3761: ST_TO_ADDR
// read_multiplayer_and_game_parameters ;
3762: CALL 0 0 0
// init_map ;
3766: CALL 1235 0 0
// init_respawning ;
3770: CALL 3853 0 0
// set_shared_visions_and_alliances ;
3774: CALL 1616 0 0
// ResetFog ;
3778: CALL_OW 335
// prepare_sides ;
3782: CALL 3463 0 0
// ShowTimer ;
3786: CALL 5317 0 0
// music_nat := Side_Nations [ your_side ] ;
3790: LD_ADDR_OWVAR 71
3794: PUSH
3795: LD_EXP 29
3799: PUSH
3800: LD_OWVAR 2
3804: ARRAY
3805: ST_TO_ADDR
// CenterNowOnXY ( start_def [ Side_Positions [ your_side ] ] [ 1 ] , start_def [ Side_Positions [ your_side ] ] [ 2 ] ) ;
3806: LD_EXP 35
3810: PUSH
3811: LD_EXP 28
3815: PUSH
3816: LD_OWVAR 2
3820: ARRAY
3821: ARRAY
3822: PUSH
3823: LD_INT 1
3825: ARRAY
3826: PPUSH
3827: LD_EXP 35
3831: PUSH
3832: LD_EXP 28
3836: PUSH
3837: LD_OWVAR 2
3841: ARRAY
3842: ARRAY
3843: PUSH
3844: LD_INT 2
3846: ARRAY
3847: PPUSH
3848: CALL_OW 86
// end ; end_of_file
3852: END
// var respawn , inqueue ; export function init_respawning ; begin
3853: LD_INT 0
3855: PPUSH
// respawn := Rand ( 1 , 8 ) ;
3856: LD_ADDR_LOC 9
3860: PUSH
3861: LD_INT 1
3863: PPUSH
3864: LD_INT 8
3866: PPUSH
3867: CALL_OW 12
3871: ST_TO_ADDR
// inqueue := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
3872: LD_ADDR_LOC 10
3876: PUSH
3877: LD_INT 0
3879: PUSH
3880: LD_INT 0
3882: PUSH
3883: LD_INT 0
3885: PUSH
3886: LD_INT 0
3888: PUSH
3889: LD_INT 0
3891: PUSH
3892: LD_INT 0
3894: PUSH
3895: LD_INT 0
3897: PUSH
3898: LD_INT 0
3900: PUSH
3901: EMPTY
3902: LIST
3903: LIST
3904: LIST
3905: LIST
3906: LIST
3907: LIST
3908: LIST
3909: LIST
3910: ST_TO_ADDR
// end ;
3911: LD_VAR 0 1
3915: RET
// every 0 0$1 + 0 0$0.5 do var n , dep , aktresp ;
3916: GO 3918
3918: DISABLE
3919: LD_INT 0
3921: PPUSH
3922: PPUSH
3923: PPUSH
// begin if respawning_time_max = 0 then
3924: LD_EXP 15
3928: PUSH
3929: LD_INT 0
3931: EQUAL
3932: IFFALSE 3936
// exit ;
3934: GO 4341
// if respawn = 8 then
3936: LD_LOC 9
3940: PUSH
3941: LD_INT 8
3943: EQUAL
3944: IFFALSE 3956
// respawn := 1 else
3946: LD_ADDR_LOC 9
3950: PUSH
3951: LD_INT 1
3953: ST_TO_ADDR
3954: GO 3970
// respawn := respawn + 1 ;
3956: LD_ADDR_LOC 9
3960: PUSH
3961: LD_LOC 9
3965: PUSH
3966: LD_INT 1
3968: PLUS
3969: ST_TO_ADDR
// if Side_Positions [ respawn ] and not inqueue [ respawn ] then
3970: LD_EXP 28
3974: PUSH
3975: LD_LOC 9
3979: ARRAY
3980: PUSH
3981: LD_LOC 10
3985: PUSH
3986: LD_LOC 9
3990: ARRAY
3991: NOT
3992: AND
3993: IFFALSE 4340
// begin n := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , respawn ] , f_not , [ f_nation , nation_nature ] ] ) ;
3995: LD_ADDR_VAR 0 1
3999: PUSH
4000: LD_INT 21
4002: PUSH
4003: LD_INT 1
4005: PUSH
4006: EMPTY
4007: LIST
4008: LIST
4009: PUSH
4010: LD_INT 22
4012: PUSH
4013: LD_LOC 9
4017: PUSH
4018: EMPTY
4019: LIST
4020: LIST
4021: PUSH
4022: LD_INT 3
4024: PUSH
4025: LD_INT 23
4027: PUSH
4028: LD_INT 0
4030: PUSH
4031: EMPTY
4032: LIST
4033: LIST
4034: PUSH
4035: EMPTY
4036: LIST
4037: LIST
4038: LIST
4039: LIST
4040: PPUSH
4041: CALL_OW 69
4045: ST_TO_ADDR
// if n < number_of_people then
4046: LD_VAR 0 1
4050: PUSH
4051: LD_EXP 6
4055: LESS
4056: IFFALSE 4337
// begin dep := FilterAllUnits ( [ [ f_type , unit_building ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_ok ] , [ f_side , respawn ] ] ) ;
4058: LD_ADDR_VAR 0 2
4062: PUSH
4063: LD_INT 21
4065: PUSH
4066: LD_INT 3
4068: PUSH
4069: EMPTY
4070: LIST
4071: LIST
4072: PUSH
4073: LD_INT 2
4075: PUSH
4076: LD_INT 30
4078: PUSH
4079: LD_INT 0
4081: PUSH
4082: EMPTY
4083: LIST
4084: LIST
4085: PUSH
4086: LD_INT 30
4088: PUSH
4089: LD_INT 1
4091: PUSH
4092: EMPTY
4093: LIST
4094: LIST
4095: PUSH
4096: EMPTY
4097: LIST
4098: LIST
4099: LIST
4100: PUSH
4101: LD_INT 50
4103: PUSH
4104: EMPTY
4105: LIST
4106: PUSH
4107: LD_INT 22
4109: PUSH
4110: LD_LOC 9
4114: PUSH
4115: EMPTY
4116: LIST
4117: LIST
4118: PUSH
4119: EMPTY
4120: LIST
4121: LIST
4122: LIST
4123: LIST
4124: PPUSH
4125: CALL_OW 69
4129: ST_TO_ADDR
// if dep then
4130: LD_VAR 0 2
4134: IFFALSE 4334
// begin aktresp := respawn ;
4136: LD_ADDR_VAR 0 3
4140: PUSH
4141: LD_LOC 9
4145: ST_TO_ADDR
// inqueue := Replace ( inqueue , aktresp , true ) ;
4146: LD_ADDR_LOC 10
4150: PUSH
4151: LD_LOC 10
4155: PPUSH
4156: LD_VAR 0 3
4160: PPUSH
4161: LD_INT 1
4163: PPUSH
4164: CALL_OW 1
4168: ST_TO_ADDR
// enable ;
4169: ENABLE
// wait ( rand ( respawning_time_min , respawning_time_max ) ) ;
4170: LD_EXP 14
4174: PPUSH
4175: LD_EXP 15
4179: PPUSH
4180: CALL_OW 12
4184: PPUSH
4185: CALL_OW 67
// inqueue := Replace ( inqueue , aktresp , false ) ;
4189: LD_ADDR_LOC 10
4193: PUSH
4194: LD_LOC 10
4198: PPUSH
4199: LD_VAR 0 3
4203: PPUSH
4204: LD_INT 0
4206: PPUSH
4207: CALL_OW 1
4211: ST_TO_ADDR
// hc_name :=  ;
4212: LD_ADDR_OWVAR 26
4216: PUSH
4217: LD_STRING 
4219: ST_TO_ADDR
// hc_importance := 0 ;
4220: LD_ADDR_OWVAR 32
4224: PUSH
4225: LD_INT 0
4227: ST_TO_ADDR
// PrepareHuman ( 0 , 0 , skill_level div 2 ) ;
4228: LD_INT 0
4230: PPUSH
4231: LD_INT 0
4233: PPUSH
4234: LD_EXP 7
4238: PUSH
4239: LD_INT 2
4241: DIV
4242: PPUSH
4243: CALL_OW 380
// uc_nation := Side_Nations [ aktresp ] ;
4247: LD_ADDR_OWVAR 21
4251: PUSH
4252: LD_EXP 29
4256: PUSH
4257: LD_VAR 0 3
4261: ARRAY
4262: ST_TO_ADDR
// uc_side := aktresp ;
4263: LD_ADDR_OWVAR 20
4267: PUSH
4268: LD_VAR 0 3
4272: ST_TO_ADDR
// dep := dep [ Rand ( 1 , dep ) ] ;
4273: LD_ADDR_VAR 0 2
4277: PUSH
4278: LD_VAR 0 2
4282: PUSH
4283: LD_INT 1
4285: PPUSH
4286: LD_VAR 0 2
4290: PPUSH
4291: CALL_OW 12
4295: ARRAY
4296: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( dep ) , GetY ( dep ) , 7 , true ) ;
4297: CALL_OW 44
4301: PPUSH
4302: LD_VAR 0 2
4306: PPUSH
4307: CALL_OW 250
4311: PPUSH
4312: LD_VAR 0 2
4316: PPUSH
4317: CALL_OW 251
4321: PPUSH
4322: LD_INT 7
4324: PPUSH
4325: LD_INT 1
4327: PPUSH
4328: CALL_OW 50
// end else
4332: GO 4335
// enable ;
4334: ENABLE
// end else
4335: GO 4338
// enable ;
4337: ENABLE
// end else
4338: GO 4341
// enable ;
4340: ENABLE
// end ; end_of_file
4341: PPOPN 3
4343: END
// every 1 1$0 + 0 0$0.3 marked 10 do
4344: GO 4346
4346: DISABLE
// begin CreateCratesAnywhere ( Rand ( 4 , 5 ) , true ) ;
4347: LD_INT 4
4349: PPUSH
4350: LD_INT 5
4352: PPUSH
4353: CALL_OW 12
4357: PPUSH
4358: LD_INT 1
4360: PPUSH
4361: CALL_OW 57
// enable ;
4365: ENABLE
// end ;
4366: END
// every 0 0$1 + 0 0$0.6 marked 10 do var i , amount ;
4367: GO 4369
4369: DISABLE
4370: LD_INT 0
4372: PPUSH
4373: PPUSH
// begin case tick of 1 .. 1 1$0 :
4374: LD_OWVAR 1
4378: PUSH
4379: LD_INT 1
4381: DOUBLE
4382: GREATEREQUAL
4383: IFFALSE 4391
4385: LD_INT 2100
4387: DOUBLE
4388: LESSEQUAL
4389: IFTRUE 4393
4391: GO 4421
4393: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$10 , 0 0$30 ) ) ; 1 1$0 + 1 .. 5 5$0 :
4394: LD_EXP 10
4398: PUSH
4399: LD_INT 100
4401: DIVREAL
4402: PUSH
4403: LD_INT 350
4405: PPUSH
4406: LD_INT 1050
4408: PPUSH
4409: CALL_OW 12
4413: MUL
4414: PPUSH
4415: CALL_OW 67
4419: GO 4723
4421: LD_INT 2100
4423: PUSH
4424: LD_INT 1
4426: PLUS
4427: DOUBLE
4428: GREATEREQUAL
4429: IFFALSE 4437
4431: LD_INT 10500
4433: DOUBLE
4434: LESSEQUAL
4435: IFTRUE 4439
4437: GO 4467
4439: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$30 , 0 0$45 ) ) ; 5 5$0 + 1 .. 10 10$0 :
4440: LD_EXP 10
4444: PUSH
4445: LD_INT 100
4447: DIVREAL
4448: PUSH
4449: LD_INT 1050
4451: PPUSH
4452: LD_INT 1575
4454: PPUSH
4455: CALL_OW 12
4459: MUL
4460: PPUSH
4461: CALL_OW 67
4465: GO 4723
4467: LD_INT 10500
4469: PUSH
4470: LD_INT 1
4472: PLUS
4473: DOUBLE
4474: GREATEREQUAL
4475: IFFALSE 4483
4477: LD_INT 21000
4479: DOUBLE
4480: LESSEQUAL
4481: IFTRUE 4485
4483: GO 4513
4485: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$45 , 1 1$0 ) ) ; 10 10$0 + 1 .. 20 20$0 :
4486: LD_EXP 10
4490: PUSH
4491: LD_INT 100
4493: DIVREAL
4494: PUSH
4495: LD_INT 1575
4497: PPUSH
4498: LD_INT 2100
4500: PPUSH
4501: CALL_OW 12
4505: MUL
4506: PPUSH
4507: CALL_OW 67
4511: GO 4723
4513: LD_INT 21000
4515: PUSH
4516: LD_INT 1
4518: PLUS
4519: DOUBLE
4520: GREATEREQUAL
4521: IFFALSE 4529
4523: LD_INT 42000
4525: DOUBLE
4526: LESSEQUAL
4527: IFTRUE 4531
4529: GO 4559
4531: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$0 , 1 1$15 ) ) ; 20 20$0 + 1 .. 30 30$0 :
4532: LD_EXP 10
4536: PUSH
4537: LD_INT 100
4539: DIVREAL
4540: PUSH
4541: LD_INT 2100
4543: PPUSH
4544: LD_INT 2625
4546: PPUSH
4547: CALL_OW 12
4551: MUL
4552: PPUSH
4553: CALL_OW 67
4557: GO 4723
4559: LD_INT 42000
4561: PUSH
4562: LD_INT 1
4564: PLUS
4565: DOUBLE
4566: GREATEREQUAL
4567: IFFALSE 4575
4569: LD_INT 63000
4571: DOUBLE
4572: LESSEQUAL
4573: IFTRUE 4577
4575: GO 4605
4577: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$15 , 1 1$30 ) ) ; 30 30$0 + 1 .. 50 50$0 :
4578: LD_EXP 10
4582: PUSH
4583: LD_INT 100
4585: DIVREAL
4586: PUSH
4587: LD_INT 2625
4589: PPUSH
4590: LD_INT 3150
4592: PPUSH
4593: CALL_OW 12
4597: MUL
4598: PPUSH
4599: CALL_OW 67
4603: GO 4723
4605: LD_INT 63000
4607: PUSH
4608: LD_INT 1
4610: PLUS
4611: DOUBLE
4612: GREATEREQUAL
4613: IFFALSE 4621
4615: LD_INT 105000
4617: DOUBLE
4618: LESSEQUAL
4619: IFTRUE 4623
4621: GO 4651
4623: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$30 , 1 1$45 ) ) ; 50 50$0 + 1 .. 300 300$0 :
4624: LD_EXP 10
4628: PUSH
4629: LD_INT 100
4631: DIVREAL
4632: PUSH
4633: LD_INT 3150
4635: PPUSH
4636: LD_INT 3675
4638: PPUSH
4639: CALL_OW 12
4643: MUL
4644: PPUSH
4645: CALL_OW 67
4649: GO 4723
4651: LD_INT 105000
4653: PUSH
4654: LD_INT 1
4656: PLUS
4657: DOUBLE
4658: GREATEREQUAL
4659: IFFALSE 4667
4661: LD_INT 630000
4663: DOUBLE
4664: LESSEQUAL
4665: IFTRUE 4669
4667: GO 4697
4669: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$45 , 2 2$0 ) ) ; else
4670: LD_EXP 10
4674: PUSH
4675: LD_INT 100
4677: DIVREAL
4678: PUSH
4679: LD_INT 3675
4681: PPUSH
4682: LD_INT 4200
4684: PPUSH
4685: CALL_OW 12
4689: MUL
4690: PPUSH
4691: CALL_OW 67
4695: GO 4723
4697: POP
// Wait ( shipments_density / 100 * Rand ( 2 2$0 , 2 2$30 ) ) ; end ;
4698: LD_EXP 10
4702: PUSH
4703: LD_INT 100
4705: DIVREAL
4706: PUSH
4707: LD_INT 4200
4709: PPUSH
4710: LD_INT 5250
4712: PPUSH
4713: CALL_OW 12
4717: MUL
4718: PPUSH
4719: CALL_OW 67
// amount := Rand ( 3 , 5 ) ;
4723: LD_ADDR_VAR 0 2
4727: PUSH
4728: LD_INT 3
4730: PPUSH
4731: LD_INT 5
4733: PPUSH
4734: CALL_OW 12
4738: ST_TO_ADDR
// for i in ( Side_Positions diff [ 0 ] ) do
4739: LD_ADDR_VAR 0 1
4743: PUSH
4744: LD_EXP 28
4748: PUSH
4749: LD_INT 0
4751: PUSH
4752: EMPTY
4753: LIST
4754: DIFF
4755: PUSH
4756: FOR_IN
4757: IFFALSE 4806
// CreateCratesXYR ( amount , start_def [ i ] [ 1 ] , start_def [ i ] [ 2 ] , 20 , true ) ;
4759: LD_VAR 0 2
4763: PPUSH
4764: LD_EXP 35
4768: PUSH
4769: LD_VAR 0 1
4773: ARRAY
4774: PUSH
4775: LD_INT 1
4777: ARRAY
4778: PPUSH
4779: LD_EXP 35
4783: PUSH
4784: LD_VAR 0 1
4788: ARRAY
4789: PUSH
4790: LD_INT 2
4792: ARRAY
4793: PPUSH
4794: LD_INT 20
4796: PPUSH
4797: LD_INT 1
4799: PPUSH
4800: CALL_OW 56
4804: GO 4756
4806: POP
4807: POP
// enable ;
4808: ENABLE
// end ; end_of_file
4809: PPOPN 2
4811: END
// on BuildingStarted ( b , u ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
4812: LD_VAR 0 1
4816: PPUSH
4817: CALL_OW 266
4821: PUSH
4822: LD_INT 0
4824: PUSH
4825: LD_INT 1
4827: PUSH
4828: EMPTY
4829: LIST
4830: LIST
4831: IN
4832: IFFALSE 4857
// SetBName ( b , @ & GetSide ( b ) ) ;
4834: LD_VAR 0 1
4838: PPUSH
4839: LD_STRING @
4841: PUSH
4842: LD_VAR 0 1
4846: PPUSH
4847: CALL_OW 255
4851: STR
4852: PPUSH
4853: CALL_OW 500
// end ;
4857: PPOPN 2
4859: END
// on BuildingCaptured ( b , o , e ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
4860: LD_VAR 0 1
4864: PPUSH
4865: CALL_OW 266
4869: PUSH
4870: LD_INT 0
4872: PUSH
4873: LD_INT 1
4875: PUSH
4876: EMPTY
4877: LIST
4878: LIST
4879: IN
4880: IFFALSE 4905
// SetBName ( b , @ & GetSide ( b ) ) ;
4882: LD_VAR 0 1
4886: PPUSH
4887: LD_STRING @
4889: PUSH
4890: LD_VAR 0 1
4894: PPUSH
4895: CALL_OW 255
4899: STR
4900: PPUSH
4901: CALL_OW 500
// end ; end_of_file
4905: PPOPN 3
4907: END
// function apeman_init ; begin
4908: LD_INT 0
4910: PPUSH
// uc_side := 0 ;
4911: LD_ADDR_OWVAR 20
4915: PUSH
4916: LD_INT 0
4918: ST_TO_ADDR
// uc_nation := nation_nature ;
4919: LD_ADDR_OWVAR 21
4923: PUSH
4924: LD_INT 0
4926: ST_TO_ADDR
// hc_class := class_apeman ;
4927: LD_ADDR_OWVAR 28
4931: PUSH
4932: LD_INT 12
4934: ST_TO_ADDR
// hc_basic_skills := [ 1 , 1 , 1 , 1 ] ;
4935: LD_ADDR_OWVAR 30
4939: PUSH
4940: LD_INT 1
4942: PUSH
4943: LD_INT 1
4945: PUSH
4946: LD_INT 1
4948: PUSH
4949: LD_INT 1
4951: PUSH
4952: EMPTY
4953: LIST
4954: LIST
4955: LIST
4956: LIST
4957: ST_TO_ADDR
// hc_skills := [ 1 , 1 , 1 , 1 ] ;
4958: LD_ADDR_OWVAR 31
4962: PUSH
4963: LD_INT 1
4965: PUSH
4966: LD_INT 1
4968: PUSH
4969: LD_INT 1
4971: PUSH
4972: LD_INT 1
4974: PUSH
4975: EMPTY
4976: LIST
4977: LIST
4978: LIST
4979: LIST
4980: ST_TO_ADDR
// hc_attr := [ 10 , 12 ] ;
4981: LD_ADDR_OWVAR 29
4985: PUSH
4986: LD_INT 10
4988: PUSH
4989: LD_INT 12
4991: PUSH
4992: EMPTY
4993: LIST
4994: LIST
4995: ST_TO_ADDR
// hc_sex := sex_male ;
4996: LD_ADDR_OWVAR 27
5000: PUSH
5001: LD_INT 1
5003: ST_TO_ADDR
// hc_importance := 0 ;
5004: LD_ADDR_OWVAR 32
5008: PUSH
5009: LD_INT 0
5011: ST_TO_ADDR
// hc_agressivity := Rand ( - 20 , 20 ) ;
5012: LD_ADDR_OWVAR 35
5016: PUSH
5017: LD_INT 20
5019: NEG
5020: PPUSH
5021: LD_INT 20
5023: PPUSH
5024: CALL_OW 12
5028: ST_TO_ADDR
// end ;
5029: LD_VAR 0 1
5033: RET
// function prepare_apemen ; var i , j , un , ape , first , d1 , d2 ; begin
5034: LD_INT 0
5036: PPUSH
5037: PPUSH
5038: PPUSH
5039: PPUSH
5040: PPUSH
5041: PPUSH
5042: PPUSH
5043: PPUSH
// ape := 0 ;
5044: LD_ADDR_VAR 0 5
5048: PUSH
5049: LD_INT 0
5051: ST_TO_ADDR
// repeat Wait ( ( ape + 1 ) * Rand ( 0 0$10 , 1 1$0 ) ) ;
5052: LD_VAR 0 5
5056: PUSH
5057: LD_INT 1
5059: PLUS
5060: PUSH
5061: LD_INT 350
5063: PPUSH
5064: LD_INT 2100
5066: PPUSH
5067: CALL_OW 12
5071: MUL
5072: PPUSH
5073: CALL_OW 67
// apeman_init ;
5077: CALL 4908 0 0
// PlaceUnitArea ( CreateHuman , Base1ApeArea , false ) ;
5081: CALL_OW 44
5085: PPUSH
5086: LD_INT 9
5088: PPUSH
5089: LD_INT 0
5091: PPUSH
5092: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base2ApeArea , false ) ;
5096: CALL_OW 44
5100: PPUSH
5101: LD_INT 10
5103: PPUSH
5104: LD_INT 0
5106: PPUSH
5107: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base3ApeArea , false ) ;
5111: CALL_OW 44
5115: PPUSH
5116: LD_INT 11
5118: PPUSH
5119: LD_INT 0
5121: PPUSH
5122: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base4ApeArea , false ) ;
5126: CALL_OW 44
5130: PPUSH
5131: LD_INT 12
5133: PPUSH
5134: LD_INT 0
5136: PPUSH
5137: CALL_OW 49
// Wait ( 3 ) ;
5141: LD_INT 3
5143: PPUSH
5144: CALL_OW 67
// ape := ape + 1 ;
5148: LD_ADDR_VAR 0 5
5152: PUSH
5153: LD_VAR 0 5
5157: PUSH
5158: LD_INT 1
5160: PLUS
5161: ST_TO_ADDR
// until ape >= amount_of_apemen ;
5162: LD_VAR 0 5
5166: PUSH
5167: LD_EXP 12
5171: GREATEREQUAL
5172: IFFALSE 5052
// end ;
5174: LD_VAR 0 1
5178: RET
// every 0 0$15 do
5179: GO 5181
5181: DISABLE
// begin prepare_apemen ;
5182: CALL 5034 0 0
// end ; end_of_file
5186: END
// every 0 0$1 do var i ;
5187: GO 5189
5189: DISABLE
5190: LD_INT 0
5192: PPUSH
// begin enable ;
5193: ENABLE
// for i = 1 to Side_positions do
5194: LD_ADDR_VAR 0 1
5198: PUSH
5199: DOUBLE
5200: LD_INT 1
5202: DEC
5203: ST_TO_ADDR
5204: LD_EXP 28
5208: PUSH
5209: FOR_TO
5210: IFFALSE 5312
// if Side_positions [ i ] and ( i <> your_side ) and not MultiplayerSideAlive ( i ) and Side_Teams [ i ] and ( Side_Teams [ i ] = Side_Teams [ your_side ] ) then
5212: LD_EXP 28
5216: PUSH
5217: LD_VAR 0 1
5221: ARRAY
5222: PUSH
5223: LD_VAR 0 1
5227: PUSH
5228: LD_OWVAR 2
5232: NONEQUAL
5233: AND
5234: PUSH
5235: LD_VAR 0 1
5239: PPUSH
5240: CALL_OW 108
5244: NOT
5245: AND
5246: PUSH
5247: LD_EXP 26
5251: PUSH
5252: LD_VAR 0 1
5256: ARRAY
5257: AND
5258: PUSH
5259: LD_EXP 26
5263: PUSH
5264: LD_VAR 0 1
5268: ARRAY
5269: PUSH
5270: LD_EXP 26
5274: PUSH
5275: LD_OWVAR 2
5279: ARRAY
5280: EQUAL
5281: AND
5282: IFFALSE 5310
// SetSide ( FilterAllUnits ( [ f_side , i ] ) , your_side ) ;
5284: LD_INT 22
5286: PUSH
5287: LD_VAR 0 1
5291: PUSH
5292: EMPTY
5293: LIST
5294: LIST
5295: PPUSH
5296: CALL_OW 69
5300: PPUSH
5301: LD_OWVAR 2
5305: PPUSH
5306: CALL_OW 235
5310: GO 5209
5312: POP
5313: POP
// end ; end_of_file
5314: PPOPN 1
5316: END
// export Game_Type , def_game_rules ; export def_base_level , def_amount_of_people , def_skill_level , def_starting_resources , def_shipments_density , def_shared_vision , def_people_respawning ; end_of_file export ExtraStrings ; export function ShowTimer ; var AllStrings ; begin
5317: LD_INT 0
5319: PPUSH
5320: PPUSH
// AllStrings := [ #Multi1x1-Time , tick ] ;
5321: LD_ADDR_VAR 0 2
5325: PUSH
5326: LD_STRING #Multi1x1-Time
5328: PUSH
5329: LD_OWVAR 1
5333: PUSH
5334: EMPTY
5335: LIST
5336: LIST
5337: ST_TO_ADDR
// if ( ExtraStrings ) then
5338: LD_EXP 50
5342: IFFALSE 5364
// AllStrings := AllStrings ^  ^ ExtraStrings ;
5344: LD_ADDR_VAR 0 2
5348: PUSH
5349: LD_VAR 0 2
5353: PUSH
5354: LD_STRING 
5356: ADD
5357: PUSH
5358: LD_EXP 50
5362: ADD
5363: ST_TO_ADDR
// Display_Strings := AllStrings ;
5364: LD_ADDR_OWVAR 47
5368: PUSH
5369: LD_VAR 0 2
5373: ST_TO_ADDR
// end ;
5374: LD_VAR 0 1
5378: RET
// every 0 0$1 do
5379: GO 5381
5381: DISABLE
// begin ShowTimer ;
5382: CALL 5317 0 0
// enable ;
5386: ENABLE
// end ; end_of_file
5387: END
// every 0 0$1 trigger OmicronAI = 1 do
5388: LD_EXP 16
5392: PUSH
5393: LD_INT 1
5395: EQUAL
5396: IFFALSE 5409
5398: GO 5400
5400: DISABLE
// begin PlaceOmicronBaseForAI ;
5401: CALL 5604 0 0
// PrepareOmicronPeople ;
5405: CALL 6186 0 0
// end ;
5409: END
// every 0 0$1 trigger ArabianAI = 1 do
5410: LD_EXP 17
5414: PUSH
5415: LD_INT 1
5417: EQUAL
5418: IFFALSE 5431
5420: GO 5422
5422: DISABLE
// begin PlaceArabianBaseForAI ;
5423: CALL 7542 0 0
// PrepareArabianPeople ;
5427: CALL 8113 0 0
// end ;
5431: END
// every 0 0$1 trigger BeriaAI = 1 do
5432: LD_EXP 18
5436: PUSH
5437: LD_INT 1
5439: EQUAL
5440: IFFALSE 5453
5442: GO 5444
5444: DISABLE
// begin PlaceRussian1BaseForAI ;
5445: CALL 9373 0 0
// PrepareRussian1People ;
5449: CALL 9921 0 0
// end ;
5453: END
// every 0 0$1 trigger KirovAI = 1 do
5454: LD_EXP 19
5458: PUSH
5459: LD_INT 1
5461: EQUAL
5462: IFFALSE 5475
5464: GO 5466
5466: DISABLE
// begin PlaceRussian2BaseForAI ;
5467: CALL 11181 0 0
// PrepareRussian2People ;
5471: CALL 11716 0 0
// end ;
5475: END
// every 0 0$1 trigger OmicronAI = 1 and ArabianAI = 1 do
5476: LD_EXP 16
5480: PUSH
5481: LD_INT 1
5483: EQUAL
5484: PUSH
5485: LD_EXP 17
5489: PUSH
5490: LD_INT 1
5492: EQUAL
5493: AND
5494: IFFALSE 5539
5496: GO 5498
5498: DISABLE
// begin SetAttitude ( cpu1 , cpu2 , att_enemy , true ) ;
5499: LD_EXP 72
5503: PPUSH
5504: LD_EXP 73
5508: PPUSH
5509: LD_INT 2
5511: PPUSH
5512: LD_INT 1
5514: PPUSH
5515: CALL_OW 80
// SetAttitude ( cpu2 , cpu1 , att_enemy , true ) ;
5519: LD_EXP 73
5523: PPUSH
5524: LD_EXP 72
5528: PPUSH
5529: LD_INT 2
5531: PPUSH
5532: LD_INT 1
5534: PPUSH
5535: CALL_OW 80
// end ;
5539: END
// every 0 0$1 trigger BeriaAI = 1 and KirovAI = 1 do
5540: LD_EXP 18
5544: PUSH
5545: LD_INT 1
5547: EQUAL
5548: PUSH
5549: LD_EXP 19
5553: PUSH
5554: LD_INT 1
5556: EQUAL
5557: AND
5558: IFFALSE 5603
5560: GO 5562
5562: DISABLE
// begin SetAttitude ( cpu3 , cpu4 , att_friend , true ) ;
5563: LD_EXP 74
5567: PPUSH
5568: LD_EXP 75
5572: PPUSH
5573: LD_INT 1
5575: PPUSH
5576: LD_INT 1
5578: PPUSH
5579: CALL_OW 80
// SetAttitude ( cpu4 , cpu3 , att_friend , true ) ;
5583: LD_EXP 75
5587: PPUSH
5588: LD_EXP 74
5592: PPUSH
5593: LD_INT 1
5595: PPUSH
5596: LD_INT 1
5598: PPUSH
5599: CALL_OW 80
// end ;
5603: END
// export AmericansList ; export amdepo , amlab , amfab , amarmoury ; export function PlaceOmicronBaseForAI ; var weapon , US_Turret , i ; begin
5604: LD_INT 0
5606: PPUSH
5607: PPUSH
5608: PPUSH
5609: PPUSH
// SetTech ( 11 , cpu1 , state_disabled ) ;
5610: LD_INT 11
5612: PPUSH
5613: LD_EXP 72
5617: PPUSH
5618: LD_INT 0
5620: PPUSH
5621: CALL_OW 322
// SetTech ( 2 , cpu1 , state_disabled ) ;
5625: LD_INT 2
5627: PPUSH
5628: LD_EXP 72
5632: PPUSH
5633: LD_INT 0
5635: PPUSH
5636: CALL_OW 322
// uc_nation = 1 ;
5640: LD_ADDR_OWVAR 21
5644: PUSH
5645: LD_INT 1
5647: ST_TO_ADDR
// uc_side = cpu1 ;
5648: LD_ADDR_OWVAR 20
5652: PUSH
5653: LD_EXP 72
5657: ST_TO_ADDR
// bc_type = 1 ;
5658: LD_ADDR_OWVAR 42
5662: PUSH
5663: LD_INT 1
5665: ST_TO_ADDR
// amdepo = CreateAndPlaceBuildingXYD ( 9 , 6 , 2 ) ;
5666: LD_ADDR_EXP 52
5670: PUSH
5671: LD_INT 9
5673: PPUSH
5674: LD_INT 6
5676: PPUSH
5677: LD_INT 2
5679: PPUSH
5680: CALL_OW 47
5684: ST_TO_ADDR
// SetResourceType ( GetBase ( amdepo ) , mat_cans , 20000 [ mat_cans ] ) ;
5685: LD_EXP 52
5689: PPUSH
5690: CALL_OW 274
5694: PPUSH
5695: LD_INT 1
5697: PPUSH
5698: LD_INT 20000
5700: PUSH
5701: LD_INT 1
5703: ARRAY
5704: PPUSH
5705: CALL_OW 277
// SetResourceType ( GetBase ( amdepo ) , mat_oil , 5000 [ mat_oil ] ) ;
5709: LD_EXP 52
5713: PPUSH
5714: CALL_OW 274
5718: PPUSH
5719: LD_INT 2
5721: PPUSH
5722: LD_INT 5000
5724: PUSH
5725: LD_INT 2
5727: ARRAY
5728: PPUSH
5729: CALL_OW 277
// bc_type = 5 ;
5733: LD_ADDR_OWVAR 42
5737: PUSH
5738: LD_INT 5
5740: ST_TO_ADDR
// amarmoury = CreateAndPlaceBuildingXYD ( 32 , 20 , 4 ) ;
5741: LD_ADDR_EXP 55
5745: PUSH
5746: LD_INT 32
5748: PPUSH
5749: LD_INT 20
5751: PPUSH
5752: LD_INT 4
5754: PPUSH
5755: CALL_OW 47
5759: ST_TO_ADDR
// bc_type = 32 ;
5760: LD_ADDR_OWVAR 42
5764: PUSH
5765: LD_INT 32
5767: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 28 , 8 , 4 ) ;
5768: LD_INT 28
5770: PPUSH
5771: LD_INT 8
5773: PPUSH
5774: LD_INT 4
5776: PPUSH
5777: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 31 , 16 , 4 ) ;
5781: LD_INT 31
5783: PPUSH
5784: LD_INT 16
5786: PPUSH
5787: LD_INT 4
5789: PPUSH
5790: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 26 , 2 , 4 ) ;
5794: LD_INT 26
5796: PPUSH
5797: LD_INT 2
5799: PPUSH
5800: LD_INT 4
5802: PPUSH
5803: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 29 , 29 , 5 ) ;
5807: LD_INT 29
5809: PPUSH
5810: LD_INT 29
5812: PPUSH
5813: LD_INT 5
5815: PPUSH
5816: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 16 , 28 , 0 ) ;
5820: LD_INT 16
5822: PPUSH
5823: LD_INT 28
5825: PPUSH
5826: LD_INT 0
5828: PPUSH
5829: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 27 , 30 , 5 ) ;
5833: LD_INT 27
5835: PPUSH
5836: LD_INT 30
5838: PPUSH
5839: LD_INT 5
5841: PPUSH
5842: CALL_OW 47
// bc_type = b_lab ;
5846: LD_ADDR_OWVAR 42
5850: PUSH
5851: LD_INT 6
5853: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
5854: LD_ADDR_OWVAR 44
5858: PUSH
5859: LD_INT 10
5861: ST_TO_ADDR
// bc_kind2 = b_lab_basic ;
5862: LD_ADDR_OWVAR 45
5866: PUSH
5867: LD_INT 9
5869: ST_TO_ADDR
// amlab = CreateAndPlaceBuildingXYD ( 13 , 5 , 2 ) ;
5870: LD_ADDR_EXP 53
5874: PUSH
5875: LD_INT 13
5877: PPUSH
5878: LD_INT 5
5880: PPUSH
5881: LD_INT 2
5883: PPUSH
5884: CALL_OW 47
5888: ST_TO_ADDR
// bc_type = 3 ;
5889: LD_ADDR_OWVAR 42
5893: PUSH
5894: LD_INT 3
5896: ST_TO_ADDR
// amfab = CreateAndPlaceBuildingXYD ( 15 , 17 , 1 ) ;
5897: LD_ADDR_EXP 54
5901: PUSH
5902: LD_INT 15
5904: PPUSH
5905: LD_INT 17
5907: PPUSH
5908: LD_INT 1
5910: PPUSH
5911: CALL_OW 47
5915: ST_TO_ADDR
// bc_type = 17 ;
5916: LD_ADDR_OWVAR 42
5920: PUSH
5921: LD_INT 17
5923: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 15 , 20 , 0 ) ;
5924: LD_INT 15
5926: PPUSH
5927: LD_INT 20
5929: PPUSH
5930: LD_INT 0
5932: PPUSH
5933: CALL_OW 47
// bc_type = 16 ;
5937: LD_ADDR_OWVAR 42
5941: PUSH
5942: LD_INT 16
5944: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 12 , 14 , 2 ) ;
5945: LD_INT 12
5947: PPUSH
5948: LD_INT 14
5950: PPUSH
5951: LD_INT 2
5953: PPUSH
5954: CALL_OW 47
// bc_type = 19 ;
5958: LD_ADDR_OWVAR 42
5962: PUSH
5963: LD_INT 19
5965: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 11 , 17 , 1 ) ;
5966: LD_INT 11
5968: PPUSH
5969: LD_INT 17
5971: PPUSH
5972: LD_INT 1
5974: PPUSH
5975: CALL_OW 47
// bc_type = 27 ;
5979: LD_ADDR_OWVAR 42
5983: PUSH
5984: LD_INT 27
5986: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 6 , 7 , 4 ) ;
5987: LD_INT 6
5989: PPUSH
5990: LD_INT 7
5992: PPUSH
5993: LD_INT 4
5995: PPUSH
5996: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 7 , 10 , 1 ) ;
6000: LD_INT 7
6002: PPUSH
6003: LD_INT 10
6005: PPUSH
6006: LD_INT 1
6008: PPUSH
6009: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 9 , 9 , 2 ) ;
6013: LD_INT 9
6015: PPUSH
6016: LD_INT 9
6018: PPUSH
6019: LD_INT 2
6021: PPUSH
6022: CALL_OW 47
// bc_type = 26 ;
6026: LD_ADDR_OWVAR 42
6030: PUSH
6031: LD_INT 26
6033: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 17 , 3 , 1 ) ;
6034: LD_INT 17
6036: PPUSH
6037: LD_INT 3
6039: PPUSH
6040: LD_INT 1
6042: PPUSH
6043: CALL_OW 47
// SetResourceVisibility ( 25 , 4 , cpu1 ) ;
6047: LD_INT 25
6049: PPUSH
6050: LD_INT 4
6052: PPUSH
6053: LD_EXP 72
6057: PPUSH
6058: CALL_OW 441
// bc_type = 29 ;
6062: LD_ADDR_OWVAR 42
6066: PUSH
6067: LD_INT 29
6069: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 25 , 4 , 3 ) ;
6070: LD_INT 25
6072: PPUSH
6073: LD_INT 4
6075: PPUSH
6076: LD_INT 3
6078: PPUSH
6079: CALL_OW 47
// weapon = [ 5 , 4 , 3 ] ;
6083: LD_ADDR_VAR 0 2
6087: PUSH
6088: LD_INT 5
6090: PUSH
6091: LD_INT 4
6093: PUSH
6094: LD_INT 3
6096: PUSH
6097: EMPTY
6098: LIST
6099: LIST
6100: LIST
6101: ST_TO_ADDR
// US_Turret := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_btype , b_bunker ] ] ) ;
6102: LD_ADDR_VAR 0 3
6106: PUSH
6107: LD_INT 22
6109: PUSH
6110: LD_EXP 72
6114: PUSH
6115: EMPTY
6116: LIST
6117: LIST
6118: PUSH
6119: LD_INT 30
6121: PUSH
6122: LD_INT 32
6124: PUSH
6125: EMPTY
6126: LIST
6127: LIST
6128: PUSH
6129: EMPTY
6130: LIST
6131: LIST
6132: PPUSH
6133: CALL_OW 69
6137: ST_TO_ADDR
// for i in US_turret do
6138: LD_ADDR_VAR 0 4
6142: PUSH
6143: LD_VAR 0 3
6147: PUSH
6148: FOR_IN
6149: IFFALSE 6179
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 3 ) ] ) ;
6151: LD_VAR 0 4
6155: PPUSH
6156: LD_VAR 0 2
6160: PUSH
6161: LD_INT 1
6163: PPUSH
6164: LD_INT 3
6166: PPUSH
6167: CALL_OW 12
6171: ARRAY
6172: PPUSH
6173: CALL_OW 431
// end ;
6177: GO 6148
6179: POP
6180: POP
// end ;
6181: LD_VAR 0 1
6185: RET
// export function PrepareOmicronPeople ; var US_turret , i , level , un , l ; begin
6186: LD_INT 0
6188: PPUSH
6189: PPUSH
6190: PPUSH
6191: PPUSH
6192: PPUSH
6193: PPUSH
// US_Turret := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_btype , b_bunker ] ] ) ;
6194: LD_ADDR_VAR 0 2
6198: PUSH
6199: LD_INT 22
6201: PUSH
6202: LD_EXP 72
6206: PUSH
6207: EMPTY
6208: LIST
6209: LIST
6210: PUSH
6211: LD_INT 30
6213: PUSH
6214: LD_INT 32
6216: PUSH
6217: EMPTY
6218: LIST
6219: LIST
6220: PUSH
6221: EMPTY
6222: LIST
6223: LIST
6224: PPUSH
6225: CALL_OW 69
6229: ST_TO_ADDR
// uc_side = cpu1 ;
6230: LD_ADDR_OWVAR 20
6234: PUSH
6235: LD_EXP 72
6239: ST_TO_ADDR
// uc_nation = 1 ;
6240: LD_ADDR_OWVAR 21
6244: PUSH
6245: LD_INT 1
6247: ST_TO_ADDR
// Level = difficultyC ;
6248: LD_ADDR_VAR 0 4
6252: PUSH
6253: LD_EXP 20
6257: ST_TO_ADDR
// hc_gallery =  ;
6258: LD_ADDR_OWVAR 33
6262: PUSH
6263: LD_STRING 
6265: ST_TO_ADDR
// hc_name =  ;
6266: LD_ADDR_OWVAR 26
6270: PUSH
6271: LD_STRING 
6273: ST_TO_ADDR
// for i in US_Turret do
6274: LD_ADDR_VAR 0 3
6278: PUSH
6279: LD_VAR 0 2
6283: PUSH
6284: FOR_IN
6285: IFFALSE 6430
// begin if IsInUnit ( i ) = 0 then
6287: LD_VAR 0 3
6291: PPUSH
6292: CALL_OW 310
6296: PUSH
6297: LD_INT 0
6299: EQUAL
6300: IFFALSE 6428
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6302: LD_ADDR_OWVAR 29
6306: PUSH
6307: LD_INT 9
6309: PPUSH
6310: LD_INT 11
6312: PPUSH
6313: CALL_OW 12
6317: PUSH
6318: LD_INT 10
6320: PPUSH
6321: LD_INT 12
6323: PPUSH
6324: CALL_OW 12
6328: PUSH
6329: EMPTY
6330: LIST
6331: LIST
6332: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
6333: LD_ADDR_OWVAR 31
6337: PUSH
6338: LD_VAR 0 4
6342: PUSH
6343: LD_VAR 0 4
6347: PUSH
6348: LD_VAR 0 4
6352: PUSH
6353: LD_VAR 0 4
6357: PUSH
6358: EMPTY
6359: LIST
6360: LIST
6361: LIST
6362: LIST
6363: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6364: LD_ADDR_OWVAR 27
6368: PUSH
6369: LD_INT 1
6371: PPUSH
6372: LD_INT 2
6374: PPUSH
6375: CALL_OW 12
6379: ST_TO_ADDR
// hc_class = 1 ;
6380: LD_ADDR_OWVAR 28
6384: PUSH
6385: LD_INT 1
6387: ST_TO_ADDR
// un := CreateHuman ;
6388: LD_ADDR_VAR 0 5
6392: PUSH
6393: CALL_OW 44
6397: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
6398: LD_VAR 0 5
6402: PPUSH
6403: LD_VAR 0 3
6407: PPUSH
6408: CALL_OW 52
// AmericansList = AmericansList ^ un ;
6412: LD_ADDR_EXP 51
6416: PUSH
6417: LD_EXP 51
6421: PUSH
6422: LD_VAR 0 5
6426: ADD
6427: ST_TO_ADDR
// end ; end ;
6428: GO 6284
6430: POP
6431: POP
// for i in amdepo do
6432: LD_ADDR_VAR 0 3
6436: PUSH
6437: LD_EXP 52
6441: PUSH
6442: FOR_IN
6443: IFFALSE 6636
// begin l = 0 ;
6445: LD_ADDR_VAR 0 6
6449: PUSH
6450: LD_INT 0
6452: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
6453: LD_VAR 0 3
6457: PPUSH
6458: CALL_OW 310
6462: PUSH
6463: LD_INT 0
6465: EQUAL
6466: IFFALSE 6634
// begin repeat begin hc_gallery =  ;
6468: LD_ADDR_OWVAR 33
6472: PUSH
6473: LD_STRING 
6475: ST_TO_ADDR
// hc_name =  ;
6476: LD_ADDR_OWVAR 26
6480: PUSH
6481: LD_STRING 
6483: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6484: LD_ADDR_OWVAR 29
6488: PUSH
6489: LD_INT 9
6491: PPUSH
6492: LD_INT 11
6494: PPUSH
6495: CALL_OW 12
6499: PUSH
6500: LD_INT 10
6502: PPUSH
6503: LD_INT 12
6505: PPUSH
6506: CALL_OW 12
6510: PUSH
6511: EMPTY
6512: LIST
6513: LIST
6514: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
6515: LD_ADDR_OWVAR 31
6519: PUSH
6520: LD_VAR 0 4
6524: PUSH
6525: LD_VAR 0 4
6529: PUSH
6530: LD_VAR 0 4
6534: PUSH
6535: LD_VAR 0 4
6539: PUSH
6540: EMPTY
6541: LIST
6542: LIST
6543: LIST
6544: LIST
6545: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6546: LD_ADDR_OWVAR 27
6550: PUSH
6551: LD_INT 1
6553: PPUSH
6554: LD_INT 2
6556: PPUSH
6557: CALL_OW 12
6561: ST_TO_ADDR
// hc_class = 2 ;
6562: LD_ADDR_OWVAR 28
6566: PUSH
6567: LD_INT 2
6569: ST_TO_ADDR
// un = CreateHuman ;
6570: LD_ADDR_VAR 0 5
6574: PUSH
6575: CALL_OW 44
6579: ST_TO_ADDR
// PlaceHumanInUnit ( un , amdepo ) ;
6580: LD_VAR 0 5
6584: PPUSH
6585: LD_EXP 52
6589: PPUSH
6590: CALL_OW 52
// AmericansList = AmericansList ^ un ;
6594: LD_ADDR_EXP 51
6598: PUSH
6599: LD_EXP 51
6603: PUSH
6604: LD_VAR 0 5
6608: ADD
6609: ST_TO_ADDR
// l = l + 1 ;
6610: LD_ADDR_VAR 0 6
6614: PUSH
6615: LD_VAR 0 6
6619: PUSH
6620: LD_INT 1
6622: PLUS
6623: ST_TO_ADDR
// end until l = 4 ;
6624: LD_VAR 0 6
6628: PUSH
6629: LD_INT 4
6631: EQUAL
6632: IFFALSE 6468
// end ; end ;
6634: GO 6442
6636: POP
6637: POP
// for i in amarmoury do
6638: LD_ADDR_VAR 0 3
6642: PUSH
6643: LD_EXP 55
6647: PUSH
6648: FOR_IN
6649: IFFALSE 6842
// begin l = 0 ;
6651: LD_ADDR_VAR 0 6
6655: PUSH
6656: LD_INT 0
6658: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
6659: LD_VAR 0 3
6663: PPUSH
6664: CALL_OW 310
6668: PUSH
6669: LD_INT 0
6671: EQUAL
6672: IFFALSE 6840
// begin repeat begin hc_gallery =  ;
6674: LD_ADDR_OWVAR 33
6678: PUSH
6679: LD_STRING 
6681: ST_TO_ADDR
// hc_name =  ;
6682: LD_ADDR_OWVAR 26
6686: PUSH
6687: LD_STRING 
6689: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6690: LD_ADDR_OWVAR 29
6694: PUSH
6695: LD_INT 9
6697: PPUSH
6698: LD_INT 11
6700: PPUSH
6701: CALL_OW 12
6705: PUSH
6706: LD_INT 10
6708: PPUSH
6709: LD_INT 12
6711: PPUSH
6712: CALL_OW 12
6716: PUSH
6717: EMPTY
6718: LIST
6719: LIST
6720: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
6721: LD_ADDR_OWVAR 31
6725: PUSH
6726: LD_VAR 0 4
6730: PUSH
6731: LD_VAR 0 4
6735: PUSH
6736: LD_VAR 0 4
6740: PUSH
6741: LD_VAR 0 4
6745: PUSH
6746: EMPTY
6747: LIST
6748: LIST
6749: LIST
6750: LIST
6751: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6752: LD_ADDR_OWVAR 27
6756: PUSH
6757: LD_INT 1
6759: PPUSH
6760: LD_INT 2
6762: PPUSH
6763: CALL_OW 12
6767: ST_TO_ADDR
// hc_class = 1 ;
6768: LD_ADDR_OWVAR 28
6772: PUSH
6773: LD_INT 1
6775: ST_TO_ADDR
// un = CreateHuman ;
6776: LD_ADDR_VAR 0 5
6780: PUSH
6781: CALL_OW 44
6785: ST_TO_ADDR
// PlaceHumanInUnit ( un , amarmoury ) ;
6786: LD_VAR 0 5
6790: PPUSH
6791: LD_EXP 55
6795: PPUSH
6796: CALL_OW 52
// AmericansList = AmericansList ^ un ;
6800: LD_ADDR_EXP 51
6804: PUSH
6805: LD_EXP 51
6809: PUSH
6810: LD_VAR 0 5
6814: ADD
6815: ST_TO_ADDR
// l = l + 1 ;
6816: LD_ADDR_VAR 0 6
6820: PUSH
6821: LD_VAR 0 6
6825: PUSH
6826: LD_INT 1
6828: PLUS
6829: ST_TO_ADDR
// end until l = 4 ;
6830: LD_VAR 0 6
6834: PUSH
6835: LD_INT 4
6837: EQUAL
6838: IFFALSE 6674
// end ; end ;
6840: GO 6648
6842: POP
6843: POP
// for i in amfab do
6844: LD_ADDR_VAR 0 3
6848: PUSH
6849: LD_EXP 54
6853: PUSH
6854: FOR_IN
6855: IFFALSE 7048
// begin l = 0 ;
6857: LD_ADDR_VAR 0 6
6861: PUSH
6862: LD_INT 0
6864: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
6865: LD_VAR 0 3
6869: PPUSH
6870: CALL_OW 310
6874: PUSH
6875: LD_INT 0
6877: EQUAL
6878: IFFALSE 7046
// begin repeat begin hc_gallery =  ;
6880: LD_ADDR_OWVAR 33
6884: PUSH
6885: LD_STRING 
6887: ST_TO_ADDR
// hc_name =  ;
6888: LD_ADDR_OWVAR 26
6892: PUSH
6893: LD_STRING 
6895: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6896: LD_ADDR_OWVAR 29
6900: PUSH
6901: LD_INT 9
6903: PPUSH
6904: LD_INT 11
6906: PPUSH
6907: CALL_OW 12
6911: PUSH
6912: LD_INT 10
6914: PPUSH
6915: LD_INT 12
6917: PPUSH
6918: CALL_OW 12
6922: PUSH
6923: EMPTY
6924: LIST
6925: LIST
6926: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
6927: LD_ADDR_OWVAR 31
6931: PUSH
6932: LD_VAR 0 4
6936: PUSH
6937: LD_VAR 0 4
6941: PUSH
6942: LD_VAR 0 4
6946: PUSH
6947: LD_VAR 0 4
6951: PUSH
6952: EMPTY
6953: LIST
6954: LIST
6955: LIST
6956: LIST
6957: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6958: LD_ADDR_OWVAR 27
6962: PUSH
6963: LD_INT 1
6965: PPUSH
6966: LD_INT 2
6968: PPUSH
6969: CALL_OW 12
6973: ST_TO_ADDR
// hc_class = 3 ;
6974: LD_ADDR_OWVAR 28
6978: PUSH
6979: LD_INT 3
6981: ST_TO_ADDR
// un = CreateHuman ;
6982: LD_ADDR_VAR 0 5
6986: PUSH
6987: CALL_OW 44
6991: ST_TO_ADDR
// PlaceHumanInUnit ( un , amfab ) ;
6992: LD_VAR 0 5
6996: PPUSH
6997: LD_EXP 54
7001: PPUSH
7002: CALL_OW 52
// AmericansList = AmericansList ^ un ;
7006: LD_ADDR_EXP 51
7010: PUSH
7011: LD_EXP 51
7015: PUSH
7016: LD_VAR 0 5
7020: ADD
7021: ST_TO_ADDR
// l = l + 1 ;
7022: LD_ADDR_VAR 0 6
7026: PUSH
7027: LD_VAR 0 6
7031: PUSH
7032: LD_INT 1
7034: PLUS
7035: ST_TO_ADDR
// end until l = 5 ;
7036: LD_VAR 0 6
7040: PUSH
7041: LD_INT 5
7043: EQUAL
7044: IFFALSE 6880
// end ; end ;
7046: GO 6854
7048: POP
7049: POP
// for i in amlab do
7050: LD_ADDR_VAR 0 3
7054: PUSH
7055: LD_EXP 53
7059: PUSH
7060: FOR_IN
7061: IFFALSE 7254
// begin l = 0 ;
7063: LD_ADDR_VAR 0 6
7067: PUSH
7068: LD_INT 0
7070: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
7071: LD_VAR 0 3
7075: PPUSH
7076: CALL_OW 310
7080: PUSH
7081: LD_INT 0
7083: EQUAL
7084: IFFALSE 7252
// begin repeat begin hc_gallery =  ;
7086: LD_ADDR_OWVAR 33
7090: PUSH
7091: LD_STRING 
7093: ST_TO_ADDR
// hc_name =  ;
7094: LD_ADDR_OWVAR 26
7098: PUSH
7099: LD_STRING 
7101: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7102: LD_ADDR_OWVAR 29
7106: PUSH
7107: LD_INT 9
7109: PPUSH
7110: LD_INT 11
7112: PPUSH
7113: CALL_OW 12
7117: PUSH
7118: LD_INT 10
7120: PPUSH
7121: LD_INT 12
7123: PPUSH
7124: CALL_OW 12
7128: PUSH
7129: EMPTY
7130: LIST
7131: LIST
7132: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
7133: LD_ADDR_OWVAR 31
7137: PUSH
7138: LD_VAR 0 4
7142: PUSH
7143: LD_VAR 0 4
7147: PUSH
7148: LD_VAR 0 4
7152: PUSH
7153: LD_VAR 0 4
7157: PUSH
7158: EMPTY
7159: LIST
7160: LIST
7161: LIST
7162: LIST
7163: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
7164: LD_ADDR_OWVAR 27
7168: PUSH
7169: LD_INT 1
7171: PPUSH
7172: LD_INT 2
7174: PPUSH
7175: CALL_OW 12
7179: ST_TO_ADDR
// hc_class = 4 ;
7180: LD_ADDR_OWVAR 28
7184: PUSH
7185: LD_INT 4
7187: ST_TO_ADDR
// un = CreateHuman ;
7188: LD_ADDR_VAR 0 5
7192: PUSH
7193: CALL_OW 44
7197: ST_TO_ADDR
// PlaceHumanInUnit ( un , amlab ) ;
7198: LD_VAR 0 5
7202: PPUSH
7203: LD_EXP 53
7207: PPUSH
7208: CALL_OW 52
// AmericansList = AmericansList ^ un ;
7212: LD_ADDR_EXP 51
7216: PUSH
7217: LD_EXP 51
7221: PUSH
7222: LD_VAR 0 5
7226: ADD
7227: ST_TO_ADDR
// l = l + 1 ;
7228: LD_ADDR_VAR 0 6
7232: PUSH
7233: LD_VAR 0 6
7237: PUSH
7238: LD_INT 1
7240: PLUS
7241: ST_TO_ADDR
// end until l = 4 ;
7242: LD_VAR 0 6
7246: PUSH
7247: LD_INT 4
7249: EQUAL
7250: IFFALSE 7086
// end ; end ;
7252: GO 7060
7254: POP
7255: POP
// end ;
7256: LD_VAR 0 1
7260: RET
// every 1 1$0 trigger OmicronAI = 1 do var l , level , un , i ;
7261: LD_EXP 16
7265: PUSH
7266: LD_INT 1
7268: EQUAL
7269: IFFALSE 7539
7271: GO 7273
7273: DISABLE
7274: LD_INT 0
7276: PPUSH
7277: PPUSH
7278: PPUSH
7279: PPUSH
// begin enable ;
7280: ENABLE
// if GetSide ( amfab ) = cpu1 then
7281: LD_EXP 54
7285: PPUSH
7286: CALL_OW 255
7290: PUSH
7291: LD_EXP 72
7295: EQUAL
7296: IFFALSE 7539
// begin for i in amfab do
7298: LD_ADDR_VAR 0 4
7302: PUSH
7303: LD_EXP 54
7307: PUSH
7308: FOR_IN
7309: IFFALSE 7537
// begin l = 0 ;
7311: LD_ADDR_VAR 0 1
7315: PUSH
7316: LD_INT 0
7318: ST_TO_ADDR
// Level = difficultyC ;
7319: LD_ADDR_VAR 0 2
7323: PUSH
7324: LD_EXP 20
7328: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
7329: LD_VAR 0 4
7333: PPUSH
7334: CALL_OW 310
7338: PUSH
7339: LD_INT 0
7341: EQUAL
7342: IFFALSE 7535
// begin repeat begin wait ( 0 0$1 ) ;
7344: LD_INT 35
7346: PPUSH
7347: CALL_OW 67
// uc_side = cpu1 ;
7351: LD_ADDR_OWVAR 20
7355: PUSH
7356: LD_EXP 72
7360: ST_TO_ADDR
// uc_nation = 1 ;
7361: LD_ADDR_OWVAR 21
7365: PUSH
7366: LD_INT 1
7368: ST_TO_ADDR
// hc_gallery =  ;
7369: LD_ADDR_OWVAR 33
7373: PUSH
7374: LD_STRING 
7376: ST_TO_ADDR
// hc_name =  ;
7377: LD_ADDR_OWVAR 26
7381: PUSH
7382: LD_STRING 
7384: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7385: LD_ADDR_OWVAR 29
7389: PUSH
7390: LD_INT 9
7392: PPUSH
7393: LD_INT 11
7395: PPUSH
7396: CALL_OW 12
7400: PUSH
7401: LD_INT 10
7403: PPUSH
7404: LD_INT 12
7406: PPUSH
7407: CALL_OW 12
7411: PUSH
7412: EMPTY
7413: LIST
7414: LIST
7415: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
7416: LD_ADDR_OWVAR 31
7420: PUSH
7421: LD_VAR 0 2
7425: PUSH
7426: LD_VAR 0 2
7430: PUSH
7431: LD_VAR 0 2
7435: PUSH
7436: LD_VAR 0 2
7440: PUSH
7441: EMPTY
7442: LIST
7443: LIST
7444: LIST
7445: LIST
7446: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
7447: LD_ADDR_OWVAR 27
7451: PUSH
7452: LD_INT 1
7454: PPUSH
7455: LD_INT 2
7457: PPUSH
7458: CALL_OW 12
7462: ST_TO_ADDR
// hc_class = 3 ;
7463: LD_ADDR_OWVAR 28
7467: PUSH
7468: LD_INT 3
7470: ST_TO_ADDR
// un = CreateHuman ;
7471: LD_ADDR_VAR 0 3
7475: PUSH
7476: CALL_OW 44
7480: ST_TO_ADDR
// PlaceHumanInUnit ( un , amfab ) ;
7481: LD_VAR 0 3
7485: PPUSH
7486: LD_EXP 54
7490: PPUSH
7491: CALL_OW 52
// AmericansList = AmericansList ^ un ;
7495: LD_ADDR_EXP 51
7499: PUSH
7500: LD_EXP 51
7504: PUSH
7505: LD_VAR 0 3
7509: ADD
7510: ST_TO_ADDR
// l = l + 1 ;
7511: LD_ADDR_VAR 0 1
7515: PUSH
7516: LD_VAR 0 1
7520: PUSH
7521: LD_INT 1
7523: PLUS
7524: ST_TO_ADDR
// end until l = 5 ;
7525: LD_VAR 0 1
7529: PUSH
7530: LD_INT 5
7532: EQUAL
7533: IFFALSE 7344
// end ; end ;
7535: GO 7308
7537: POP
7538: POP
// end ; end ;
7539: PPOPN 4
7541: END
// export ArabianList ; export ardepo , arlab , arfab , ararmoury ; export function PlaceArabianBaseForAI ; var weapon , AR_Turret , i ; begin
7542: LD_INT 0
7544: PPUSH
7545: PPUSH
7546: PPUSH
7547: PPUSH
// SetTech ( 11 , cpu2 , state_disabled ) ;
7548: LD_INT 11
7550: PPUSH
7551: LD_EXP 73
7555: PPUSH
7556: LD_INT 0
7558: PPUSH
7559: CALL_OW 322
// SetTech ( 2 , cpu2 , state_disabled ) ;
7563: LD_INT 2
7565: PPUSH
7566: LD_EXP 73
7570: PPUSH
7571: LD_INT 0
7573: PPUSH
7574: CALL_OW 322
// uc_nation = 2 ;
7578: LD_ADDR_OWVAR 21
7582: PUSH
7583: LD_INT 2
7585: ST_TO_ADDR
// uc_side = cpu2 ;
7586: LD_ADDR_OWVAR 20
7590: PUSH
7591: LD_EXP 73
7595: ST_TO_ADDR
// bc_type = 1 ;
7596: LD_ADDR_OWVAR 42
7600: PUSH
7601: LD_INT 1
7603: ST_TO_ADDR
// ardepo = CreateAndPlaceBuildingXYD ( 137 , 7 , 3 ) ;
7604: LD_ADDR_EXP 57
7608: PUSH
7609: LD_INT 137
7611: PPUSH
7612: LD_INT 7
7614: PPUSH
7615: LD_INT 3
7617: PPUSH
7618: CALL_OW 47
7622: ST_TO_ADDR
// SetResourceType ( GetBase ( ardepo ) , mat_cans , 20000 [ mat_cans ] ) ;
7623: LD_EXP 57
7627: PPUSH
7628: CALL_OW 274
7632: PPUSH
7633: LD_INT 1
7635: PPUSH
7636: LD_INT 20000
7638: PUSH
7639: LD_INT 1
7641: ARRAY
7642: PPUSH
7643: CALL_OW 277
// bc_type = 5 ;
7647: LD_ADDR_OWVAR 42
7651: PUSH
7652: LD_INT 5
7654: ST_TO_ADDR
// ararmoury = CreateAndPlaceBuildingXYD ( 149 , 27 , 5 ) ;
7655: LD_ADDR_EXP 60
7659: PUSH
7660: LD_INT 149
7662: PPUSH
7663: LD_INT 27
7665: PPUSH
7666: LD_INT 5
7668: PPUSH
7669: CALL_OW 47
7673: ST_TO_ADDR
// bc_type = 32 ;
7674: LD_ADDR_OWVAR 42
7678: PUSH
7679: LD_INT 32
7681: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 162 , 24 , 5 ) ;
7682: LD_INT 162
7684: PPUSH
7685: LD_INT 24
7687: PPUSH
7688: LD_INT 5
7690: PPUSH
7691: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 121 , 9 , 1 ) ;
7695: LD_INT 121
7697: PPUSH
7698: LD_INT 9
7700: PPUSH
7701: LD_INT 1
7703: PPUSH
7704: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 159 , 25 , 5 ) ;
7708: LD_INT 159
7710: PPUSH
7711: LD_INT 25
7713: PPUSH
7714: LD_INT 5
7716: PPUSH
7717: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 145 , 27 , 5 ) ;
7721: LD_INT 145
7723: PPUSH
7724: LD_INT 27
7726: PPUSH
7727: LD_INT 5
7729: PPUSH
7730: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 140 , 29 , 5 ) ;
7734: LD_INT 140
7736: PPUSH
7737: LD_INT 29
7739: PPUSH
7740: LD_INT 5
7742: PPUSH
7743: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 123 , 17 , 1 ) ;
7747: LD_INT 123
7749: PPUSH
7750: LD_INT 17
7752: PPUSH
7753: LD_INT 1
7755: PPUSH
7756: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 118 , 3 , 1 ) ;
7760: LD_INT 118
7762: PPUSH
7763: LD_INT 3
7765: PPUSH
7766: LD_INT 1
7768: PPUSH
7769: CALL_OW 47
// bc_type = b_lab ;
7773: LD_ADDR_OWVAR 42
7777: PUSH
7778: LD_INT 6
7780: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
7781: LD_ADDR_OWVAR 44
7785: PUSH
7786: LD_INT 10
7788: ST_TO_ADDR
// bc_kind2 = b_lab_basic ;
7789: LD_ADDR_OWVAR 45
7793: PUSH
7794: LD_INT 9
7796: ST_TO_ADDR
// arlab = CreateAndPlaceBuildingXYD ( 143 , 10 , 3 ) ;
7797: LD_ADDR_EXP 58
7801: PUSH
7802: LD_INT 143
7804: PPUSH
7805: LD_INT 10
7807: PPUSH
7808: LD_INT 3
7810: PPUSH
7811: CALL_OW 47
7815: ST_TO_ADDR
// bc_type = 3 ;
7816: LD_ADDR_OWVAR 42
7820: PUSH
7821: LD_INT 3
7823: ST_TO_ADDR
// arfab = CreateAndPlaceBuildingXYD ( 151 , 13 , 3 ) ;
7824: LD_ADDR_EXP 59
7828: PUSH
7829: LD_INT 151
7831: PPUSH
7832: LD_INT 13
7834: PPUSH
7835: LD_INT 3
7837: PPUSH
7838: CALL_OW 47
7842: ST_TO_ADDR
// bc_type = 17 ;
7843: LD_ADDR_OWVAR 42
7847: PUSH
7848: LD_INT 17
7850: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 154 , 13 , 4 ) ;
7851: LD_INT 154
7853: PPUSH
7854: LD_INT 13
7856: PPUSH
7857: LD_INT 4
7859: PPUSH
7860: CALL_OW 47
// bc_type = 16 ;
7864: LD_ADDR_OWVAR 42
7868: PUSH
7869: LD_INT 16
7871: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 151 , 9 , 3 ) ;
7872: LD_INT 151
7874: PPUSH
7875: LD_INT 9
7877: PPUSH
7878: LD_INT 3
7880: PPUSH
7881: CALL_OW 47
// bc_type = 23 ;
7885: LD_ADDR_OWVAR 42
7889: PUSH
7890: LD_INT 23
7892: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 148 , 10 , 2 ) ;
7893: LD_INT 148
7895: PPUSH
7896: LD_INT 10
7898: PPUSH
7899: LD_INT 2
7901: PPUSH
7902: CALL_OW 47
// bc_type = 27 ;
7906: LD_ADDR_OWVAR 42
7910: PUSH
7911: LD_INT 27
7913: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 131 , 4 , 4 ) ;
7914: LD_INT 131
7916: PPUSH
7917: LD_INT 4
7919: PPUSH
7920: LD_INT 4
7922: PPUSH
7923: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 130 , 6 , 2 ) ;
7927: LD_INT 130
7929: PPUSH
7930: LD_INT 6
7932: PPUSH
7933: LD_INT 2
7935: PPUSH
7936: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 147 , 6 , 0 ) ;
7940: LD_INT 147
7942: PPUSH
7943: LD_INT 6
7945: PPUSH
7946: LD_INT 0
7948: PPUSH
7949: CALL_OW 47
// bc_type = 26 ;
7953: LD_ADDR_OWVAR 42
7957: PUSH
7958: LD_INT 26
7960: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 158 , 16 , 0 ) ;
7961: LD_INT 158
7963: PPUSH
7964: LD_INT 16
7966: PPUSH
7967: LD_INT 0
7969: PPUSH
7970: CALL_OW 47
// SetResourceVisibility ( 127 , 4 , cpu2 ) ;
7974: LD_INT 127
7976: PPUSH
7977: LD_INT 4
7979: PPUSH
7980: LD_EXP 73
7984: PPUSH
7985: CALL_OW 441
// bc_type = 29 ;
7989: LD_ADDR_OWVAR 42
7993: PUSH
7994: LD_INT 29
7996: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 127 , 4 , 2 ) ;
7997: LD_INT 127
7999: PPUSH
8000: LD_INT 4
8002: PPUSH
8003: LD_INT 2
8005: PPUSH
8006: CALL_OW 47
// weapon = [ 25 , 27 , 23 ] ;
8010: LD_ADDR_VAR 0 2
8014: PUSH
8015: LD_INT 25
8017: PUSH
8018: LD_INT 27
8020: PUSH
8021: LD_INT 23
8023: PUSH
8024: EMPTY
8025: LIST
8026: LIST
8027: LIST
8028: ST_TO_ADDR
// AR_Turret := FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_btype , b_bunker ] ] ) ;
8029: LD_ADDR_VAR 0 3
8033: PUSH
8034: LD_INT 22
8036: PUSH
8037: LD_EXP 73
8041: PUSH
8042: EMPTY
8043: LIST
8044: LIST
8045: PUSH
8046: LD_INT 30
8048: PUSH
8049: LD_INT 32
8051: PUSH
8052: EMPTY
8053: LIST
8054: LIST
8055: PUSH
8056: EMPTY
8057: LIST
8058: LIST
8059: PPUSH
8060: CALL_OW 69
8064: ST_TO_ADDR
// for i in AR_turret do
8065: LD_ADDR_VAR 0 4
8069: PUSH
8070: LD_VAR 0 3
8074: PUSH
8075: FOR_IN
8076: IFFALSE 8106
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 3 ) ] ) ;
8078: LD_VAR 0 4
8082: PPUSH
8083: LD_VAR 0 2
8087: PUSH
8088: LD_INT 1
8090: PPUSH
8091: LD_INT 3
8093: PPUSH
8094: CALL_OW 12
8098: ARRAY
8099: PPUSH
8100: CALL_OW 431
// end ;
8104: GO 8075
8106: POP
8107: POP
// end ;
8108: LD_VAR 0 1
8112: RET
// export function PrepareArabianPeople ; var AR_turret , i , level , un , l ; begin
8113: LD_INT 0
8115: PPUSH
8116: PPUSH
8117: PPUSH
8118: PPUSH
8119: PPUSH
8120: PPUSH
// AR_Turret := FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_btype , b_bunker ] ] ) ;
8121: LD_ADDR_VAR 0 2
8125: PUSH
8126: LD_INT 22
8128: PUSH
8129: LD_EXP 73
8133: PUSH
8134: EMPTY
8135: LIST
8136: LIST
8137: PUSH
8138: LD_INT 30
8140: PUSH
8141: LD_INT 32
8143: PUSH
8144: EMPTY
8145: LIST
8146: LIST
8147: PUSH
8148: EMPTY
8149: LIST
8150: LIST
8151: PPUSH
8152: CALL_OW 69
8156: ST_TO_ADDR
// uc_side = cpu2 ;
8157: LD_ADDR_OWVAR 20
8161: PUSH
8162: LD_EXP 73
8166: ST_TO_ADDR
// uc_nation = 2 ;
8167: LD_ADDR_OWVAR 21
8171: PUSH
8172: LD_INT 2
8174: ST_TO_ADDR
// Level = difficultyC ;
8175: LD_ADDR_VAR 0 4
8179: PUSH
8180: LD_EXP 20
8184: ST_TO_ADDR
// hc_gallery =  ;
8185: LD_ADDR_OWVAR 33
8189: PUSH
8190: LD_STRING 
8192: ST_TO_ADDR
// hc_name =  ;
8193: LD_ADDR_OWVAR 26
8197: PUSH
8198: LD_STRING 
8200: ST_TO_ADDR
// for i in AR_Turret do
8201: LD_ADDR_VAR 0 3
8205: PUSH
8206: LD_VAR 0 2
8210: PUSH
8211: FOR_IN
8212: IFFALSE 8341
// begin if IsInUnit ( i ) = 0 then
8214: LD_VAR 0 3
8218: PPUSH
8219: CALL_OW 310
8223: PUSH
8224: LD_INT 0
8226: EQUAL
8227: IFFALSE 8339
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8229: LD_ADDR_OWVAR 29
8233: PUSH
8234: LD_INT 9
8236: PPUSH
8237: LD_INT 11
8239: PPUSH
8240: CALL_OW 12
8244: PUSH
8245: LD_INT 10
8247: PPUSH
8248: LD_INT 12
8250: PPUSH
8251: CALL_OW 12
8255: PUSH
8256: EMPTY
8257: LIST
8258: LIST
8259: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
8260: LD_ADDR_OWVAR 31
8264: PUSH
8265: LD_VAR 0 4
8269: PUSH
8270: LD_VAR 0 4
8274: PUSH
8275: LD_VAR 0 4
8279: PUSH
8280: LD_VAR 0 4
8284: PUSH
8285: EMPTY
8286: LIST
8287: LIST
8288: LIST
8289: LIST
8290: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8291: LD_ADDR_OWVAR 27
8295: PUSH
8296: LD_INT 1
8298: PPUSH
8299: LD_INT 2
8301: PPUSH
8302: CALL_OW 12
8306: ST_TO_ADDR
// hc_class = 1 ;
8307: LD_ADDR_OWVAR 28
8311: PUSH
8312: LD_INT 1
8314: ST_TO_ADDR
// un := CreateHuman ;
8315: LD_ADDR_VAR 0 5
8319: PUSH
8320: CALL_OW 44
8324: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
8325: LD_VAR 0 5
8329: PPUSH
8330: LD_VAR 0 3
8334: PPUSH
8335: CALL_OW 52
// end ; end ;
8339: GO 8211
8341: POP
8342: POP
// for i in ardepo do
8343: LD_ADDR_VAR 0 3
8347: PUSH
8348: LD_EXP 57
8352: PUSH
8353: FOR_IN
8354: IFFALSE 8531
// begin l = 0 ;
8356: LD_ADDR_VAR 0 6
8360: PUSH
8361: LD_INT 0
8363: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
8364: LD_VAR 0 3
8368: PPUSH
8369: CALL_OW 310
8373: PUSH
8374: LD_INT 0
8376: EQUAL
8377: IFFALSE 8529
// begin repeat begin hc_gallery =  ;
8379: LD_ADDR_OWVAR 33
8383: PUSH
8384: LD_STRING 
8386: ST_TO_ADDR
// hc_name =  ;
8387: LD_ADDR_OWVAR 26
8391: PUSH
8392: LD_STRING 
8394: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8395: LD_ADDR_OWVAR 29
8399: PUSH
8400: LD_INT 9
8402: PPUSH
8403: LD_INT 11
8405: PPUSH
8406: CALL_OW 12
8410: PUSH
8411: LD_INT 10
8413: PPUSH
8414: LD_INT 12
8416: PPUSH
8417: CALL_OW 12
8421: PUSH
8422: EMPTY
8423: LIST
8424: LIST
8425: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
8426: LD_ADDR_OWVAR 31
8430: PUSH
8431: LD_VAR 0 4
8435: PUSH
8436: LD_VAR 0 4
8440: PUSH
8441: LD_VAR 0 4
8445: PUSH
8446: LD_VAR 0 4
8450: PUSH
8451: EMPTY
8452: LIST
8453: LIST
8454: LIST
8455: LIST
8456: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8457: LD_ADDR_OWVAR 27
8461: PUSH
8462: LD_INT 1
8464: PPUSH
8465: LD_INT 2
8467: PPUSH
8468: CALL_OW 12
8472: ST_TO_ADDR
// hc_class = 2 ;
8473: LD_ADDR_OWVAR 28
8477: PUSH
8478: LD_INT 2
8480: ST_TO_ADDR
// un = CreateHuman ;
8481: LD_ADDR_VAR 0 5
8485: PUSH
8486: CALL_OW 44
8490: ST_TO_ADDR
// PlaceHumanInUnit ( un , ardepo ) ;
8491: LD_VAR 0 5
8495: PPUSH
8496: LD_EXP 57
8500: PPUSH
8501: CALL_OW 52
// l = l + 1 ;
8505: LD_ADDR_VAR 0 6
8509: PUSH
8510: LD_VAR 0 6
8514: PUSH
8515: LD_INT 1
8517: PLUS
8518: ST_TO_ADDR
// end until l = 4 ;
8519: LD_VAR 0 6
8523: PUSH
8524: LD_INT 4
8526: EQUAL
8527: IFFALSE 8379
// end ; end ;
8529: GO 8353
8531: POP
8532: POP
// for i in ararmoury do
8533: LD_ADDR_VAR 0 3
8537: PUSH
8538: LD_EXP 60
8542: PUSH
8543: FOR_IN
8544: IFFALSE 8721
// begin l = 0 ;
8546: LD_ADDR_VAR 0 6
8550: PUSH
8551: LD_INT 0
8553: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
8554: LD_VAR 0 3
8558: PPUSH
8559: CALL_OW 310
8563: PUSH
8564: LD_INT 0
8566: EQUAL
8567: IFFALSE 8719
// begin repeat begin hc_gallery =  ;
8569: LD_ADDR_OWVAR 33
8573: PUSH
8574: LD_STRING 
8576: ST_TO_ADDR
// hc_name =  ;
8577: LD_ADDR_OWVAR 26
8581: PUSH
8582: LD_STRING 
8584: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8585: LD_ADDR_OWVAR 29
8589: PUSH
8590: LD_INT 9
8592: PPUSH
8593: LD_INT 11
8595: PPUSH
8596: CALL_OW 12
8600: PUSH
8601: LD_INT 10
8603: PPUSH
8604: LD_INT 12
8606: PPUSH
8607: CALL_OW 12
8611: PUSH
8612: EMPTY
8613: LIST
8614: LIST
8615: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
8616: LD_ADDR_OWVAR 31
8620: PUSH
8621: LD_VAR 0 4
8625: PUSH
8626: LD_VAR 0 4
8630: PUSH
8631: LD_VAR 0 4
8635: PUSH
8636: LD_VAR 0 4
8640: PUSH
8641: EMPTY
8642: LIST
8643: LIST
8644: LIST
8645: LIST
8646: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8647: LD_ADDR_OWVAR 27
8651: PUSH
8652: LD_INT 1
8654: PPUSH
8655: LD_INT 2
8657: PPUSH
8658: CALL_OW 12
8662: ST_TO_ADDR
// hc_class = 1 ;
8663: LD_ADDR_OWVAR 28
8667: PUSH
8668: LD_INT 1
8670: ST_TO_ADDR
// un = CreateHuman ;
8671: LD_ADDR_VAR 0 5
8675: PUSH
8676: CALL_OW 44
8680: ST_TO_ADDR
// PlaceHumanInUnit ( un , ararmoury ) ;
8681: LD_VAR 0 5
8685: PPUSH
8686: LD_EXP 60
8690: PPUSH
8691: CALL_OW 52
// l = l + 1 ;
8695: LD_ADDR_VAR 0 6
8699: PUSH
8700: LD_VAR 0 6
8704: PUSH
8705: LD_INT 1
8707: PLUS
8708: ST_TO_ADDR
// end until l = 4 ;
8709: LD_VAR 0 6
8713: PUSH
8714: LD_INT 4
8716: EQUAL
8717: IFFALSE 8569
// end ; end ;
8719: GO 8543
8721: POP
8722: POP
// for i in arfab do
8723: LD_ADDR_VAR 0 3
8727: PUSH
8728: LD_EXP 59
8732: PUSH
8733: FOR_IN
8734: IFFALSE 8911
// begin l = 0 ;
8736: LD_ADDR_VAR 0 6
8740: PUSH
8741: LD_INT 0
8743: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
8744: LD_VAR 0 3
8748: PPUSH
8749: CALL_OW 310
8753: PUSH
8754: LD_INT 0
8756: EQUAL
8757: IFFALSE 8909
// begin repeat begin hc_gallery =  ;
8759: LD_ADDR_OWVAR 33
8763: PUSH
8764: LD_STRING 
8766: ST_TO_ADDR
// hc_name =  ;
8767: LD_ADDR_OWVAR 26
8771: PUSH
8772: LD_STRING 
8774: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8775: LD_ADDR_OWVAR 29
8779: PUSH
8780: LD_INT 9
8782: PPUSH
8783: LD_INT 11
8785: PPUSH
8786: CALL_OW 12
8790: PUSH
8791: LD_INT 10
8793: PPUSH
8794: LD_INT 12
8796: PPUSH
8797: CALL_OW 12
8801: PUSH
8802: EMPTY
8803: LIST
8804: LIST
8805: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
8806: LD_ADDR_OWVAR 31
8810: PUSH
8811: LD_VAR 0 4
8815: PUSH
8816: LD_VAR 0 4
8820: PUSH
8821: LD_VAR 0 4
8825: PUSH
8826: LD_VAR 0 4
8830: PUSH
8831: EMPTY
8832: LIST
8833: LIST
8834: LIST
8835: LIST
8836: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8837: LD_ADDR_OWVAR 27
8841: PUSH
8842: LD_INT 1
8844: PPUSH
8845: LD_INT 2
8847: PPUSH
8848: CALL_OW 12
8852: ST_TO_ADDR
// hc_class = 3 ;
8853: LD_ADDR_OWVAR 28
8857: PUSH
8858: LD_INT 3
8860: ST_TO_ADDR
// un = CreateHuman ;
8861: LD_ADDR_VAR 0 5
8865: PUSH
8866: CALL_OW 44
8870: ST_TO_ADDR
// PlaceHumanInUnit ( un , arfab ) ;
8871: LD_VAR 0 5
8875: PPUSH
8876: LD_EXP 59
8880: PPUSH
8881: CALL_OW 52
// l = l + 1 ;
8885: LD_ADDR_VAR 0 6
8889: PUSH
8890: LD_VAR 0 6
8894: PUSH
8895: LD_INT 1
8897: PLUS
8898: ST_TO_ADDR
// end until l = 5 ;
8899: LD_VAR 0 6
8903: PUSH
8904: LD_INT 5
8906: EQUAL
8907: IFFALSE 8759
// end ; end ;
8909: GO 8733
8911: POP
8912: POP
// for i in arlab do
8913: LD_ADDR_VAR 0 3
8917: PUSH
8918: LD_EXP 58
8922: PUSH
8923: FOR_IN
8924: IFFALSE 9101
// begin l = 0 ;
8926: LD_ADDR_VAR 0 6
8930: PUSH
8931: LD_INT 0
8933: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
8934: LD_VAR 0 3
8938: PPUSH
8939: CALL_OW 310
8943: PUSH
8944: LD_INT 0
8946: EQUAL
8947: IFFALSE 9099
// begin repeat begin hc_gallery =  ;
8949: LD_ADDR_OWVAR 33
8953: PUSH
8954: LD_STRING 
8956: ST_TO_ADDR
// hc_name =  ;
8957: LD_ADDR_OWVAR 26
8961: PUSH
8962: LD_STRING 
8964: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8965: LD_ADDR_OWVAR 29
8969: PUSH
8970: LD_INT 9
8972: PPUSH
8973: LD_INT 11
8975: PPUSH
8976: CALL_OW 12
8980: PUSH
8981: LD_INT 10
8983: PPUSH
8984: LD_INT 12
8986: PPUSH
8987: CALL_OW 12
8991: PUSH
8992: EMPTY
8993: LIST
8994: LIST
8995: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
8996: LD_ADDR_OWVAR 31
9000: PUSH
9001: LD_VAR 0 4
9005: PUSH
9006: LD_VAR 0 4
9010: PUSH
9011: LD_VAR 0 4
9015: PUSH
9016: LD_VAR 0 4
9020: PUSH
9021: EMPTY
9022: LIST
9023: LIST
9024: LIST
9025: LIST
9026: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9027: LD_ADDR_OWVAR 27
9031: PUSH
9032: LD_INT 1
9034: PPUSH
9035: LD_INT 2
9037: PPUSH
9038: CALL_OW 12
9042: ST_TO_ADDR
// hc_class = 4 ;
9043: LD_ADDR_OWVAR 28
9047: PUSH
9048: LD_INT 4
9050: ST_TO_ADDR
// un = CreateHuman ;
9051: LD_ADDR_VAR 0 5
9055: PUSH
9056: CALL_OW 44
9060: ST_TO_ADDR
// PlaceHumanInUnit ( un , arlab ) ;
9061: LD_VAR 0 5
9065: PPUSH
9066: LD_EXP 58
9070: PPUSH
9071: CALL_OW 52
// l = l + 1 ;
9075: LD_ADDR_VAR 0 6
9079: PUSH
9080: LD_VAR 0 6
9084: PUSH
9085: LD_INT 1
9087: PLUS
9088: ST_TO_ADDR
// end until l = 4 ;
9089: LD_VAR 0 6
9093: PUSH
9094: LD_INT 4
9096: EQUAL
9097: IFFALSE 8949
// end ; end ;
9099: GO 8923
9101: POP
9102: POP
// end ;
9103: LD_VAR 0 1
9107: RET
// every 1 1$0 trigger ArabianAI = 1 do var l , level , un , i ;
9108: LD_EXP 17
9112: PUSH
9113: LD_INT 1
9115: EQUAL
9116: IFFALSE 9370
9118: GO 9120
9120: DISABLE
9121: LD_INT 0
9123: PPUSH
9124: PPUSH
9125: PPUSH
9126: PPUSH
// begin enable ;
9127: ENABLE
// if GetSide ( arfab ) = cpu2 then
9128: LD_EXP 59
9132: PPUSH
9133: CALL_OW 255
9137: PUSH
9138: LD_EXP 73
9142: EQUAL
9143: IFFALSE 9370
// begin for i in arfab do
9145: LD_ADDR_VAR 0 4
9149: PUSH
9150: LD_EXP 59
9154: PUSH
9155: FOR_IN
9156: IFFALSE 9368
// begin l = 0 ;
9158: LD_ADDR_VAR 0 1
9162: PUSH
9163: LD_INT 0
9165: ST_TO_ADDR
// Level = difficultyC ;
9166: LD_ADDR_VAR 0 2
9170: PUSH
9171: LD_EXP 20
9175: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
9176: LD_VAR 0 4
9180: PPUSH
9181: CALL_OW 310
9185: PUSH
9186: LD_INT 0
9188: EQUAL
9189: IFFALSE 9366
// begin repeat begin wait ( 0 0$1 ) ;
9191: LD_INT 35
9193: PPUSH
9194: CALL_OW 67
// uc_side = cpu2 ;
9198: LD_ADDR_OWVAR 20
9202: PUSH
9203: LD_EXP 73
9207: ST_TO_ADDR
// uc_nation = 2 ;
9208: LD_ADDR_OWVAR 21
9212: PUSH
9213: LD_INT 2
9215: ST_TO_ADDR
// hc_gallery =  ;
9216: LD_ADDR_OWVAR 33
9220: PUSH
9221: LD_STRING 
9223: ST_TO_ADDR
// hc_name =  ;
9224: LD_ADDR_OWVAR 26
9228: PUSH
9229: LD_STRING 
9231: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
9232: LD_ADDR_OWVAR 29
9236: PUSH
9237: LD_INT 9
9239: PPUSH
9240: LD_INT 11
9242: PPUSH
9243: CALL_OW 12
9247: PUSH
9248: LD_INT 10
9250: PPUSH
9251: LD_INT 12
9253: PPUSH
9254: CALL_OW 12
9258: PUSH
9259: EMPTY
9260: LIST
9261: LIST
9262: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
9263: LD_ADDR_OWVAR 31
9267: PUSH
9268: LD_VAR 0 2
9272: PUSH
9273: LD_VAR 0 2
9277: PUSH
9278: LD_VAR 0 2
9282: PUSH
9283: LD_VAR 0 2
9287: PUSH
9288: EMPTY
9289: LIST
9290: LIST
9291: LIST
9292: LIST
9293: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9294: LD_ADDR_OWVAR 27
9298: PUSH
9299: LD_INT 1
9301: PPUSH
9302: LD_INT 2
9304: PPUSH
9305: CALL_OW 12
9309: ST_TO_ADDR
// hc_class = 3 ;
9310: LD_ADDR_OWVAR 28
9314: PUSH
9315: LD_INT 3
9317: ST_TO_ADDR
// un = CreateHuman ;
9318: LD_ADDR_VAR 0 3
9322: PUSH
9323: CALL_OW 44
9327: ST_TO_ADDR
// PlaceHumanInUnit ( un , arfab ) ;
9328: LD_VAR 0 3
9332: PPUSH
9333: LD_EXP 59
9337: PPUSH
9338: CALL_OW 52
// l = l + 1 ;
9342: LD_ADDR_VAR 0 1
9346: PUSH
9347: LD_VAR 0 1
9351: PUSH
9352: LD_INT 1
9354: PLUS
9355: ST_TO_ADDR
// end until l = 5 ;
9356: LD_VAR 0 1
9360: PUSH
9361: LD_INT 5
9363: EQUAL
9364: IFFALSE 9191
// end ; end ;
9366: GO 9155
9368: POP
9369: POP
// end ; end ;
9370: PPOPN 4
9372: END
// export ru1depo , ru1lab , ru1fab , ru1armoury ; export function PlaceRussian1BaseForAI ; var weapon , RU_Turret , i ; begin
9373: LD_INT 0
9375: PPUSH
9376: PPUSH
9377: PPUSH
9378: PPUSH
// SetTech ( 11 , cpu3 , state_disabled ) ;
9379: LD_INT 11
9381: PPUSH
9382: LD_EXP 74
9386: PPUSH
9387: LD_INT 0
9389: PPUSH
9390: CALL_OW 322
// SetTech ( 2 , cpu3 , state_disabled ) ;
9394: LD_INT 2
9396: PPUSH
9397: LD_EXP 74
9401: PPUSH
9402: LD_INT 0
9404: PPUSH
9405: CALL_OW 322
// uc_nation = 3 ;
9409: LD_ADDR_OWVAR 21
9413: PUSH
9414: LD_INT 3
9416: ST_TO_ADDR
// uc_side = cpu3 ;
9417: LD_ADDR_OWVAR 20
9421: PUSH
9422: LD_EXP 74
9426: ST_TO_ADDR
// bc_type = 1 ;
9427: LD_ADDR_OWVAR 42
9431: PUSH
9432: LD_INT 1
9434: ST_TO_ADDR
// ru1depo = CreateAndPlaceBuildingXYD ( 101 , 78 , 0 ) ;
9435: LD_ADDR_EXP 61
9439: PUSH
9440: LD_INT 101
9442: PPUSH
9443: LD_INT 78
9445: PPUSH
9446: LD_INT 0
9448: PPUSH
9449: CALL_OW 47
9453: ST_TO_ADDR
// SetResourceType ( GetBase ( ru1depo ) , mat_cans , 20000 [ mat_cans ] ) ;
9454: LD_EXP 61
9458: PPUSH
9459: CALL_OW 274
9463: PPUSH
9464: LD_INT 1
9466: PPUSH
9467: LD_INT 20000
9469: PUSH
9470: LD_INT 1
9472: ARRAY
9473: PPUSH
9474: CALL_OW 277
// SetResourceType ( GetBase ( ru1depo ) , mat_oil , 5000 ) ;
9478: LD_EXP 61
9482: PPUSH
9483: CALL_OW 274
9487: PPUSH
9488: LD_INT 2
9490: PPUSH
9491: LD_INT 5000
9493: PPUSH
9494: CALL_OW 277
// bc_type = 5 ;
9498: LD_ADDR_OWVAR 42
9502: PUSH
9503: LD_INT 5
9505: ST_TO_ADDR
// ru1armoury = CreateAndPlaceBuildingXYD ( 92 , 60 , 2 ) ;
9506: LD_ADDR_EXP 64
9510: PUSH
9511: LD_INT 92
9513: PPUSH
9514: LD_INT 60
9516: PPUSH
9517: LD_INT 2
9519: PPUSH
9520: CALL_OW 47
9524: ST_TO_ADDR
// bc_type = 32 ;
9525: LD_ADDR_OWVAR 42
9529: PUSH
9530: LD_INT 32
9532: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 105 , 59 , 3 ) ;
9533: LD_INT 105
9535: PPUSH
9536: LD_INT 59
9538: PPUSH
9539: LD_INT 3
9541: PPUSH
9542: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 108 , 60 , 3 ) ;
9546: LD_INT 108
9548: PPUSH
9549: LD_INT 60
9551: PPUSH
9552: LD_INT 3
9554: PPUSH
9555: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 114 , 70 , 4 ) ;
9559: LD_INT 114
9561: PPUSH
9562: LD_INT 70
9564: PPUSH
9565: LD_INT 4
9567: PPUSH
9568: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 117 , 78 , 5 ) ;
9572: LD_INT 117
9574: PPUSH
9575: LD_INT 78
9577: PPUSH
9578: LD_INT 5
9580: PPUSH
9581: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 111 , 67 , 3 ) ;
9585: LD_INT 111
9587: PPUSH
9588: LD_INT 67
9590: PPUSH
9591: LD_INT 3
9593: PPUSH
9594: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 89 , 61 , 2 ) ;
9598: LD_INT 89
9600: PPUSH
9601: LD_INT 61
9603: PPUSH
9604: LD_INT 2
9606: PPUSH
9607: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 91 , 69 , 1 ) ;
9611: LD_INT 91
9613: PPUSH
9614: LD_INT 69
9616: PPUSH
9617: LD_INT 1
9619: PPUSH
9620: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 92 , 72 , 1 ) ;
9624: LD_INT 92
9626: PPUSH
9627: LD_INT 72
9629: PPUSH
9630: LD_INT 1
9632: PPUSH
9633: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 105 , 83 , 0 ) ;
9637: LD_INT 105
9639: PPUSH
9640: LD_INT 83
9642: PPUSH
9643: LD_INT 0
9645: PPUSH
9646: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 97 , 80 , 0 ) ;
9650: LD_INT 97
9652: PPUSH
9653: LD_INT 80
9655: PPUSH
9656: LD_INT 0
9658: PPUSH
9659: CALL_OW 47
// bc_type = b_lab ;
9663: LD_ADDR_OWVAR 42
9667: PUSH
9668: LD_INT 6
9670: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
9671: LD_ADDR_OWVAR 44
9675: PUSH
9676: LD_INT 10
9678: ST_TO_ADDR
// bc_kind2 = b_lab_basic ;
9679: LD_ADDR_OWVAR 45
9683: PUSH
9684: LD_INT 9
9686: ST_TO_ADDR
// ru1lab = CreateAndPlaceBuildingXYD ( 101 , 64 , 3 ) ;
9687: LD_ADDR_EXP 62
9691: PUSH
9692: LD_INT 101
9694: PPUSH
9695: LD_INT 64
9697: PPUSH
9698: LD_INT 3
9700: PPUSH
9701: CALL_OW 47
9705: ST_TO_ADDR
// bc_type = 3 ;
9706: LD_ADDR_OWVAR 42
9710: PUSH
9711: LD_INT 3
9713: ST_TO_ADDR
// ru1fab = CreateAndPlaceBuildingXYD ( 110 , 77 , 0 ) ;
9714: LD_ADDR_EXP 63
9718: PUSH
9719: LD_INT 110
9721: PPUSH
9722: LD_INT 77
9724: PPUSH
9725: LD_INT 0
9727: PPUSH
9728: CALL_OW 47
9732: ST_TO_ADDR
// bc_type = 17 ;
9733: LD_ADDR_OWVAR 42
9737: PUSH
9738: LD_INT 17
9740: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 107 , 77 , 1 ) ;
9741: LD_INT 107
9743: PPUSH
9744: LD_INT 77
9746: PPUSH
9747: LD_INT 1
9749: PPUSH
9750: CALL_OW 47
// bc_type = 16 ;
9754: LD_ADDR_OWVAR 42
9758: PUSH
9759: LD_INT 16
9761: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 106 , 73 , 2 ) ;
9762: LD_INT 106
9764: PPUSH
9765: LD_INT 73
9767: PPUSH
9768: LD_INT 2
9770: PPUSH
9771: CALL_OW 47
// bc_type = 26 ;
9775: LD_ADDR_OWVAR 42
9779: PUSH
9780: LD_INT 26
9782: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 106 , 67 , 0 ) ;
9783: LD_INT 106
9785: PPUSH
9786: LD_INT 67
9788: PPUSH
9789: LD_INT 0
9791: PPUSH
9792: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 114 , 81 , 0 ) ;
9796: LD_INT 114
9798: PPUSH
9799: LD_INT 81
9801: PPUSH
9802: LD_INT 0
9804: PPUSH
9805: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 105 , 63 , 0 ) ;
9809: LD_INT 105
9811: PPUSH
9812: LD_INT 63
9814: PPUSH
9815: LD_INT 0
9817: PPUSH
9818: CALL_OW 47
// weapon = [ 44 , 43 ] ;
9822: LD_ADDR_VAR 0 2
9826: PUSH
9827: LD_INT 44
9829: PUSH
9830: LD_INT 43
9832: PUSH
9833: EMPTY
9834: LIST
9835: LIST
9836: ST_TO_ADDR
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_btype , b_bunker ] ] ) ;
9837: LD_ADDR_VAR 0 3
9841: PUSH
9842: LD_INT 22
9844: PUSH
9845: LD_EXP 74
9849: PUSH
9850: EMPTY
9851: LIST
9852: LIST
9853: PUSH
9854: LD_INT 30
9856: PUSH
9857: LD_INT 32
9859: PUSH
9860: EMPTY
9861: LIST
9862: LIST
9863: PUSH
9864: EMPTY
9865: LIST
9866: LIST
9867: PPUSH
9868: CALL_OW 69
9872: ST_TO_ADDR
// for i in RU_turret do
9873: LD_ADDR_VAR 0 4
9877: PUSH
9878: LD_VAR 0 3
9882: PUSH
9883: FOR_IN
9884: IFFALSE 9914
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 2 ) ] ) ;
9886: LD_VAR 0 4
9890: PPUSH
9891: LD_VAR 0 2
9895: PUSH
9896: LD_INT 1
9898: PPUSH
9899: LD_INT 2
9901: PPUSH
9902: CALL_OW 12
9906: ARRAY
9907: PPUSH
9908: CALL_OW 431
// end ;
9912: GO 9883
9914: POP
9915: POP
// end ;
9916: LD_VAR 0 1
9920: RET
// export function PrepareRussian1People ; var RU_turret , i , level , un , l ; begin
9921: LD_INT 0
9923: PPUSH
9924: PPUSH
9925: PPUSH
9926: PPUSH
9927: PPUSH
9928: PPUSH
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_btype , b_bunker ] ] ) ;
9929: LD_ADDR_VAR 0 2
9933: PUSH
9934: LD_INT 22
9936: PUSH
9937: LD_EXP 74
9941: PUSH
9942: EMPTY
9943: LIST
9944: LIST
9945: PUSH
9946: LD_INT 30
9948: PUSH
9949: LD_INT 32
9951: PUSH
9952: EMPTY
9953: LIST
9954: LIST
9955: PUSH
9956: EMPTY
9957: LIST
9958: LIST
9959: PPUSH
9960: CALL_OW 69
9964: ST_TO_ADDR
// uc_side = cpu3 ;
9965: LD_ADDR_OWVAR 20
9969: PUSH
9970: LD_EXP 74
9974: ST_TO_ADDR
// uc_nation = 3 ;
9975: LD_ADDR_OWVAR 21
9979: PUSH
9980: LD_INT 3
9982: ST_TO_ADDR
// Level = difficultyC ;
9983: LD_ADDR_VAR 0 4
9987: PUSH
9988: LD_EXP 20
9992: ST_TO_ADDR
// hc_gallery =  ;
9993: LD_ADDR_OWVAR 33
9997: PUSH
9998: LD_STRING 
10000: ST_TO_ADDR
// hc_name =  ;
10001: LD_ADDR_OWVAR 26
10005: PUSH
10006: LD_STRING 
10008: ST_TO_ADDR
// for i in RU_Turret do
10009: LD_ADDR_VAR 0 3
10013: PUSH
10014: LD_VAR 0 2
10018: PUSH
10019: FOR_IN
10020: IFFALSE 10149
// begin if IsInUnit ( i ) = 0 then
10022: LD_VAR 0 3
10026: PPUSH
10027: CALL_OW 310
10031: PUSH
10032: LD_INT 0
10034: EQUAL
10035: IFFALSE 10147
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10037: LD_ADDR_OWVAR 29
10041: PUSH
10042: LD_INT 9
10044: PPUSH
10045: LD_INT 11
10047: PPUSH
10048: CALL_OW 12
10052: PUSH
10053: LD_INT 10
10055: PPUSH
10056: LD_INT 12
10058: PPUSH
10059: CALL_OW 12
10063: PUSH
10064: EMPTY
10065: LIST
10066: LIST
10067: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10068: LD_ADDR_OWVAR 31
10072: PUSH
10073: LD_VAR 0 4
10077: PUSH
10078: LD_VAR 0 4
10082: PUSH
10083: LD_VAR 0 4
10087: PUSH
10088: LD_VAR 0 4
10092: PUSH
10093: EMPTY
10094: LIST
10095: LIST
10096: LIST
10097: LIST
10098: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10099: LD_ADDR_OWVAR 27
10103: PUSH
10104: LD_INT 1
10106: PPUSH
10107: LD_INT 2
10109: PPUSH
10110: CALL_OW 12
10114: ST_TO_ADDR
// hc_class = 1 ;
10115: LD_ADDR_OWVAR 28
10119: PUSH
10120: LD_INT 1
10122: ST_TO_ADDR
// un := CreateHuman ;
10123: LD_ADDR_VAR 0 5
10127: PUSH
10128: CALL_OW 44
10132: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
10133: LD_VAR 0 5
10137: PPUSH
10138: LD_VAR 0 3
10142: PPUSH
10143: CALL_OW 52
// end ; end ;
10147: GO 10019
10149: POP
10150: POP
// for i in ru1depo do
10151: LD_ADDR_VAR 0 3
10155: PUSH
10156: LD_EXP 61
10160: PUSH
10161: FOR_IN
10162: IFFALSE 10339
// begin l = 0 ;
10164: LD_ADDR_VAR 0 6
10168: PUSH
10169: LD_INT 0
10171: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10172: LD_VAR 0 3
10176: PPUSH
10177: CALL_OW 310
10181: PUSH
10182: LD_INT 0
10184: EQUAL
10185: IFFALSE 10337
// begin repeat begin hc_gallery =  ;
10187: LD_ADDR_OWVAR 33
10191: PUSH
10192: LD_STRING 
10194: ST_TO_ADDR
// hc_name =  ;
10195: LD_ADDR_OWVAR 26
10199: PUSH
10200: LD_STRING 
10202: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10203: LD_ADDR_OWVAR 29
10207: PUSH
10208: LD_INT 9
10210: PPUSH
10211: LD_INT 11
10213: PPUSH
10214: CALL_OW 12
10218: PUSH
10219: LD_INT 10
10221: PPUSH
10222: LD_INT 12
10224: PPUSH
10225: CALL_OW 12
10229: PUSH
10230: EMPTY
10231: LIST
10232: LIST
10233: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10234: LD_ADDR_OWVAR 31
10238: PUSH
10239: LD_VAR 0 4
10243: PUSH
10244: LD_VAR 0 4
10248: PUSH
10249: LD_VAR 0 4
10253: PUSH
10254: LD_VAR 0 4
10258: PUSH
10259: EMPTY
10260: LIST
10261: LIST
10262: LIST
10263: LIST
10264: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10265: LD_ADDR_OWVAR 27
10269: PUSH
10270: LD_INT 1
10272: PPUSH
10273: LD_INT 2
10275: PPUSH
10276: CALL_OW 12
10280: ST_TO_ADDR
// hc_class = 2 ;
10281: LD_ADDR_OWVAR 28
10285: PUSH
10286: LD_INT 2
10288: ST_TO_ADDR
// un = CreateHuman ;
10289: LD_ADDR_VAR 0 5
10293: PUSH
10294: CALL_OW 44
10298: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru1depo ) ;
10299: LD_VAR 0 5
10303: PPUSH
10304: LD_EXP 61
10308: PPUSH
10309: CALL_OW 52
// l = l + 1 ;
10313: LD_ADDR_VAR 0 6
10317: PUSH
10318: LD_VAR 0 6
10322: PUSH
10323: LD_INT 1
10325: PLUS
10326: ST_TO_ADDR
// end until l = 4 ;
10327: LD_VAR 0 6
10331: PUSH
10332: LD_INT 4
10334: EQUAL
10335: IFFALSE 10187
// end ; end ;
10337: GO 10161
10339: POP
10340: POP
// for i in ru1armoury do
10341: LD_ADDR_VAR 0 3
10345: PUSH
10346: LD_EXP 64
10350: PUSH
10351: FOR_IN
10352: IFFALSE 10529
// begin l = 0 ;
10354: LD_ADDR_VAR 0 6
10358: PUSH
10359: LD_INT 0
10361: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10362: LD_VAR 0 3
10366: PPUSH
10367: CALL_OW 310
10371: PUSH
10372: LD_INT 0
10374: EQUAL
10375: IFFALSE 10527
// begin repeat begin hc_gallery =  ;
10377: LD_ADDR_OWVAR 33
10381: PUSH
10382: LD_STRING 
10384: ST_TO_ADDR
// hc_name =  ;
10385: LD_ADDR_OWVAR 26
10389: PUSH
10390: LD_STRING 
10392: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10393: LD_ADDR_OWVAR 29
10397: PUSH
10398: LD_INT 9
10400: PPUSH
10401: LD_INT 11
10403: PPUSH
10404: CALL_OW 12
10408: PUSH
10409: LD_INT 10
10411: PPUSH
10412: LD_INT 12
10414: PPUSH
10415: CALL_OW 12
10419: PUSH
10420: EMPTY
10421: LIST
10422: LIST
10423: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10424: LD_ADDR_OWVAR 31
10428: PUSH
10429: LD_VAR 0 4
10433: PUSH
10434: LD_VAR 0 4
10438: PUSH
10439: LD_VAR 0 4
10443: PUSH
10444: LD_VAR 0 4
10448: PUSH
10449: EMPTY
10450: LIST
10451: LIST
10452: LIST
10453: LIST
10454: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10455: LD_ADDR_OWVAR 27
10459: PUSH
10460: LD_INT 1
10462: PPUSH
10463: LD_INT 2
10465: PPUSH
10466: CALL_OW 12
10470: ST_TO_ADDR
// hc_class = 1 ;
10471: LD_ADDR_OWVAR 28
10475: PUSH
10476: LD_INT 1
10478: ST_TO_ADDR
// un = CreateHuman ;
10479: LD_ADDR_VAR 0 5
10483: PUSH
10484: CALL_OW 44
10488: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru1armoury ) ;
10489: LD_VAR 0 5
10493: PPUSH
10494: LD_EXP 64
10498: PPUSH
10499: CALL_OW 52
// l = l + 1 ;
10503: LD_ADDR_VAR 0 6
10507: PUSH
10508: LD_VAR 0 6
10512: PUSH
10513: LD_INT 1
10515: PLUS
10516: ST_TO_ADDR
// end until l = 4 ;
10517: LD_VAR 0 6
10521: PUSH
10522: LD_INT 4
10524: EQUAL
10525: IFFALSE 10377
// end ; end ;
10527: GO 10351
10529: POP
10530: POP
// for i in ru1fab do
10531: LD_ADDR_VAR 0 3
10535: PUSH
10536: LD_EXP 63
10540: PUSH
10541: FOR_IN
10542: IFFALSE 10719
// begin l = 0 ;
10544: LD_ADDR_VAR 0 6
10548: PUSH
10549: LD_INT 0
10551: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10552: LD_VAR 0 3
10556: PPUSH
10557: CALL_OW 310
10561: PUSH
10562: LD_INT 0
10564: EQUAL
10565: IFFALSE 10717
// begin repeat begin hc_gallery =  ;
10567: LD_ADDR_OWVAR 33
10571: PUSH
10572: LD_STRING 
10574: ST_TO_ADDR
// hc_name =  ;
10575: LD_ADDR_OWVAR 26
10579: PUSH
10580: LD_STRING 
10582: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10583: LD_ADDR_OWVAR 29
10587: PUSH
10588: LD_INT 9
10590: PPUSH
10591: LD_INT 11
10593: PPUSH
10594: CALL_OW 12
10598: PUSH
10599: LD_INT 10
10601: PPUSH
10602: LD_INT 12
10604: PPUSH
10605: CALL_OW 12
10609: PUSH
10610: EMPTY
10611: LIST
10612: LIST
10613: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10614: LD_ADDR_OWVAR 31
10618: PUSH
10619: LD_VAR 0 4
10623: PUSH
10624: LD_VAR 0 4
10628: PUSH
10629: LD_VAR 0 4
10633: PUSH
10634: LD_VAR 0 4
10638: PUSH
10639: EMPTY
10640: LIST
10641: LIST
10642: LIST
10643: LIST
10644: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10645: LD_ADDR_OWVAR 27
10649: PUSH
10650: LD_INT 1
10652: PPUSH
10653: LD_INT 2
10655: PPUSH
10656: CALL_OW 12
10660: ST_TO_ADDR
// hc_class = 3 ;
10661: LD_ADDR_OWVAR 28
10665: PUSH
10666: LD_INT 3
10668: ST_TO_ADDR
// un = CreateHuman ;
10669: LD_ADDR_VAR 0 5
10673: PUSH
10674: CALL_OW 44
10678: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru1fab ) ;
10679: LD_VAR 0 5
10683: PPUSH
10684: LD_EXP 63
10688: PPUSH
10689: CALL_OW 52
// l = l + 1 ;
10693: LD_ADDR_VAR 0 6
10697: PUSH
10698: LD_VAR 0 6
10702: PUSH
10703: LD_INT 1
10705: PLUS
10706: ST_TO_ADDR
// end until l = 5 ;
10707: LD_VAR 0 6
10711: PUSH
10712: LD_INT 5
10714: EQUAL
10715: IFFALSE 10567
// end ; end ;
10717: GO 10541
10719: POP
10720: POP
// for i in ru1lab do
10721: LD_ADDR_VAR 0 3
10725: PUSH
10726: LD_EXP 62
10730: PUSH
10731: FOR_IN
10732: IFFALSE 10909
// begin l = 0 ;
10734: LD_ADDR_VAR 0 6
10738: PUSH
10739: LD_INT 0
10741: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10742: LD_VAR 0 3
10746: PPUSH
10747: CALL_OW 310
10751: PUSH
10752: LD_INT 0
10754: EQUAL
10755: IFFALSE 10907
// begin repeat begin hc_gallery =  ;
10757: LD_ADDR_OWVAR 33
10761: PUSH
10762: LD_STRING 
10764: ST_TO_ADDR
// hc_name =  ;
10765: LD_ADDR_OWVAR 26
10769: PUSH
10770: LD_STRING 
10772: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10773: LD_ADDR_OWVAR 29
10777: PUSH
10778: LD_INT 9
10780: PPUSH
10781: LD_INT 11
10783: PPUSH
10784: CALL_OW 12
10788: PUSH
10789: LD_INT 10
10791: PPUSH
10792: LD_INT 12
10794: PPUSH
10795: CALL_OW 12
10799: PUSH
10800: EMPTY
10801: LIST
10802: LIST
10803: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10804: LD_ADDR_OWVAR 31
10808: PUSH
10809: LD_VAR 0 4
10813: PUSH
10814: LD_VAR 0 4
10818: PUSH
10819: LD_VAR 0 4
10823: PUSH
10824: LD_VAR 0 4
10828: PUSH
10829: EMPTY
10830: LIST
10831: LIST
10832: LIST
10833: LIST
10834: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10835: LD_ADDR_OWVAR 27
10839: PUSH
10840: LD_INT 1
10842: PPUSH
10843: LD_INT 2
10845: PPUSH
10846: CALL_OW 12
10850: ST_TO_ADDR
// hc_class = 4 ;
10851: LD_ADDR_OWVAR 28
10855: PUSH
10856: LD_INT 4
10858: ST_TO_ADDR
// un = CreateHuman ;
10859: LD_ADDR_VAR 0 5
10863: PUSH
10864: CALL_OW 44
10868: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru1lab ) ;
10869: LD_VAR 0 5
10873: PPUSH
10874: LD_EXP 62
10878: PPUSH
10879: CALL_OW 52
// l = l + 1 ;
10883: LD_ADDR_VAR 0 6
10887: PUSH
10888: LD_VAR 0 6
10892: PUSH
10893: LD_INT 1
10895: PLUS
10896: ST_TO_ADDR
// end until l = 4 ;
10897: LD_VAR 0 6
10901: PUSH
10902: LD_INT 4
10904: EQUAL
10905: IFFALSE 10757
// end ; end ;
10907: GO 10731
10909: POP
10910: POP
// end ;
10911: LD_VAR 0 1
10915: RET
// every 1 1$0 trigger BeriaAI = 1 do var l , level , un , i ;
10916: LD_EXP 18
10920: PUSH
10921: LD_INT 1
10923: EQUAL
10924: IFFALSE 11178
10926: GO 10928
10928: DISABLE
10929: LD_INT 0
10931: PPUSH
10932: PPUSH
10933: PPUSH
10934: PPUSH
// begin enable ;
10935: ENABLE
// if GetSide ( ru1fab ) = cpu3 then
10936: LD_EXP 63
10940: PPUSH
10941: CALL_OW 255
10945: PUSH
10946: LD_EXP 74
10950: EQUAL
10951: IFFALSE 11178
// begin for i in ru1fab do
10953: LD_ADDR_VAR 0 4
10957: PUSH
10958: LD_EXP 63
10962: PUSH
10963: FOR_IN
10964: IFFALSE 11176
// begin l = 0 ;
10966: LD_ADDR_VAR 0 1
10970: PUSH
10971: LD_INT 0
10973: ST_TO_ADDR
// Level = difficultyC ;
10974: LD_ADDR_VAR 0 2
10978: PUSH
10979: LD_EXP 20
10983: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10984: LD_VAR 0 4
10988: PPUSH
10989: CALL_OW 310
10993: PUSH
10994: LD_INT 0
10996: EQUAL
10997: IFFALSE 11174
// begin repeat begin wait ( 0 0$1 ) ;
10999: LD_INT 35
11001: PPUSH
11002: CALL_OW 67
// uc_side = cpu3 ;
11006: LD_ADDR_OWVAR 20
11010: PUSH
11011: LD_EXP 74
11015: ST_TO_ADDR
// uc_nation = 3 ;
11016: LD_ADDR_OWVAR 21
11020: PUSH
11021: LD_INT 3
11023: ST_TO_ADDR
// hc_gallery =  ;
11024: LD_ADDR_OWVAR 33
11028: PUSH
11029: LD_STRING 
11031: ST_TO_ADDR
// hc_name =  ;
11032: LD_ADDR_OWVAR 26
11036: PUSH
11037: LD_STRING 
11039: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
11040: LD_ADDR_OWVAR 29
11044: PUSH
11045: LD_INT 9
11047: PPUSH
11048: LD_INT 11
11050: PPUSH
11051: CALL_OW 12
11055: PUSH
11056: LD_INT 10
11058: PPUSH
11059: LD_INT 12
11061: PPUSH
11062: CALL_OW 12
11066: PUSH
11067: EMPTY
11068: LIST
11069: LIST
11070: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
11071: LD_ADDR_OWVAR 31
11075: PUSH
11076: LD_VAR 0 2
11080: PUSH
11081: LD_VAR 0 2
11085: PUSH
11086: LD_VAR 0 2
11090: PUSH
11091: LD_VAR 0 2
11095: PUSH
11096: EMPTY
11097: LIST
11098: LIST
11099: LIST
11100: LIST
11101: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
11102: LD_ADDR_OWVAR 27
11106: PUSH
11107: LD_INT 1
11109: PPUSH
11110: LD_INT 2
11112: PPUSH
11113: CALL_OW 12
11117: ST_TO_ADDR
// hc_class = 3 ;
11118: LD_ADDR_OWVAR 28
11122: PUSH
11123: LD_INT 3
11125: ST_TO_ADDR
// un = CreateHuman ;
11126: LD_ADDR_VAR 0 3
11130: PUSH
11131: CALL_OW 44
11135: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru1fab ) ;
11136: LD_VAR 0 3
11140: PPUSH
11141: LD_EXP 63
11145: PPUSH
11146: CALL_OW 52
// l = l + 1 ;
11150: LD_ADDR_VAR 0 1
11154: PUSH
11155: LD_VAR 0 1
11159: PUSH
11160: LD_INT 1
11162: PLUS
11163: ST_TO_ADDR
// end until l = 5 ;
11164: LD_VAR 0 1
11168: PUSH
11169: LD_INT 5
11171: EQUAL
11172: IFFALSE 10999
// end ; end ;
11174: GO 10963
11176: POP
11177: POP
// end ; end ;
11178: PPOPN 4
11180: END
// export ru2depo , ru2lab , ru2fab , ru2armoury ; export function PlaceRussian2BaseForAI ; var weapon , RU_Turret , i ; begin
11181: LD_INT 0
11183: PPUSH
11184: PPUSH
11185: PPUSH
11186: PPUSH
// SetTech ( 11 , cpu4 , state_disabled ) ;
11187: LD_INT 11
11189: PPUSH
11190: LD_EXP 75
11194: PPUSH
11195: LD_INT 0
11197: PPUSH
11198: CALL_OW 322
// SetTech ( 2 , cpu4 , state_disabled ) ;
11202: LD_INT 2
11204: PPUSH
11205: LD_EXP 75
11209: PPUSH
11210: LD_INT 0
11212: PPUSH
11213: CALL_OW 322
// uc_nation = 3 ;
11217: LD_ADDR_OWVAR 21
11221: PUSH
11222: LD_INT 3
11224: ST_TO_ADDR
// uc_side = cpu4 ;
11225: LD_ADDR_OWVAR 20
11229: PUSH
11230: LD_EXP 75
11234: ST_TO_ADDR
// bc_type = 1 ;
11235: LD_ADDR_OWVAR 42
11239: PUSH
11240: LD_INT 1
11242: ST_TO_ADDR
// ru2depo = CreateAndPlaceBuildingXYD ( 147 , 75 , 3 ) ;
11243: LD_ADDR_EXP 65
11247: PUSH
11248: LD_INT 147
11250: PPUSH
11251: LD_INT 75
11253: PPUSH
11254: LD_INT 3
11256: PPUSH
11257: CALL_OW 47
11261: ST_TO_ADDR
// SetResourceType ( GetBase ( ru2depo ) , mat_cans , 20000 [ mat_cans ] ) ;
11262: LD_EXP 65
11266: PPUSH
11267: CALL_OW 274
11271: PPUSH
11272: LD_INT 1
11274: PPUSH
11275: LD_INT 20000
11277: PUSH
11278: LD_INT 1
11280: ARRAY
11281: PPUSH
11282: CALL_OW 277
// SetResourceType ( GetBase ( ru2depo ) , mat_oil , 5000 ) ;
11286: LD_EXP 65
11290: PPUSH
11291: CALL_OW 274
11295: PPUSH
11296: LD_INT 2
11298: PPUSH
11299: LD_INT 5000
11301: PPUSH
11302: CALL_OW 277
// bc_type = 5 ;
11306: LD_ADDR_OWVAR 42
11310: PUSH
11311: LD_INT 5
11313: ST_TO_ADDR
// ru2armoury = CreateAndPlaceBuildingXYD ( 153 , 81 , 3 ) ;
11314: LD_ADDR_EXP 68
11318: PUSH
11319: LD_INT 153
11321: PPUSH
11322: LD_INT 81
11324: PPUSH
11325: LD_INT 3
11327: PPUSH
11328: CALL_OW 47
11332: ST_TO_ADDR
// bc_type = 32 ;
11333: LD_ADDR_OWVAR 42
11337: PUSH
11338: LD_INT 32
11340: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 129 , 80 , 1 ) ;
11341: LD_INT 129
11343: PPUSH
11344: LD_INT 80
11346: PPUSH
11347: LD_INT 1
11349: PPUSH
11350: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 128 , 77 , 1 ) ;
11354: LD_INT 128
11356: PPUSH
11357: LD_INT 77
11359: PPUSH
11360: LD_INT 1
11362: PPUSH
11363: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 140 , 87 , 0 ) ;
11367: LD_INT 140
11369: PPUSH
11370: LD_INT 87
11372: PPUSH
11373: LD_INT 0
11375: PPUSH
11376: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 133 , 72 , 2 ) ;
11380: LD_INT 133
11382: PPUSH
11383: LD_INT 72
11385: PPUSH
11386: LD_INT 2
11388: PPUSH
11389: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 130 , 72 , 2 ) ;
11393: LD_INT 130
11395: PPUSH
11396: LD_INT 72
11398: PPUSH
11399: LD_INT 2
11401: PPUSH
11402: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 150 , 74 , 3 ) ;
11406: LD_INT 150
11408: PPUSH
11409: LD_INT 74
11411: PPUSH
11412: LD_INT 3
11414: PPUSH
11415: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 158 , 88 , 5 ) ;
11419: LD_INT 158
11421: PPUSH
11422: LD_INT 88
11424: PPUSH
11425: LD_INT 5
11427: PPUSH
11428: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 157 , 92 , 5 ) ;
11432: LD_INT 157
11434: PPUSH
11435: LD_INT 92
11437: PPUSH
11438: LD_INT 5
11440: PPUSH
11441: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 153 , 91 , 0 ) ;
11445: LD_INT 153
11447: PPUSH
11448: LD_INT 91
11450: PPUSH
11451: LD_INT 0
11453: PPUSH
11454: CALL_OW 47
// bc_type = b_lab ;
11458: LD_ADDR_OWVAR 42
11462: PUSH
11463: LD_INT 6
11465: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
11466: LD_ADDR_OWVAR 44
11470: PUSH
11471: LD_INT 10
11473: ST_TO_ADDR
// bc_kind2 = b_lab_basic ;
11474: LD_ADDR_OWVAR 45
11478: PUSH
11479: LD_INT 9
11481: ST_TO_ADDR
// ru2lab = CreateAndPlaceBuildingXYD ( 139 , 72 , 3 ) ;
11482: LD_ADDR_EXP 66
11486: PUSH
11487: LD_INT 139
11489: PPUSH
11490: LD_INT 72
11492: PPUSH
11493: LD_INT 3
11495: PPUSH
11496: CALL_OW 47
11500: ST_TO_ADDR
// bc_type = 3 ;
11501: LD_ADDR_OWVAR 42
11505: PUSH
11506: LD_INT 3
11508: ST_TO_ADDR
// ru2fab = CreateAndPlaceBuildingXYD ( 147 , 86 , 0 ) ;
11509: LD_ADDR_EXP 67
11513: PUSH
11514: LD_INT 147
11516: PPUSH
11517: LD_INT 86
11519: PPUSH
11520: LD_INT 0
11522: PPUSH
11523: CALL_OW 47
11527: ST_TO_ADDR
// bc_type = 17 ;
11528: LD_ADDR_OWVAR 42
11532: PUSH
11533: LD_INT 17
11535: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 144 , 86 , 1 ) ;
11536: LD_INT 144
11538: PPUSH
11539: LD_INT 86
11541: PPUSH
11542: LD_INT 1
11544: PPUSH
11545: CALL_OW 47
// bc_type = 16 ;
11549: LD_ADDR_OWVAR 42
11553: PUSH
11554: LD_INT 16
11556: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 147 , 90 , 0 ) ;
11557: LD_INT 147
11559: PPUSH
11560: LD_INT 90
11562: PPUSH
11563: LD_INT 0
11565: PPUSH
11566: CALL_OW 47
// bc_type = 26 ;
11570: LD_ADDR_OWVAR 42
11574: PUSH
11575: LD_INT 26
11577: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 139 , 82 , 0 ) ;
11578: LD_INT 139
11580: PPUSH
11581: LD_INT 82
11583: PPUSH
11584: LD_INT 0
11586: PPUSH
11587: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 136 , 81 , 0 ) ;
11591: LD_INT 136
11593: PPUSH
11594: LD_INT 81
11596: PPUSH
11597: LD_INT 0
11599: PPUSH
11600: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 134 , 82 , 0 ) ;
11604: LD_INT 134
11606: PPUSH
11607: LD_INT 82
11609: PPUSH
11610: LD_INT 0
11612: PPUSH
11613: CALL_OW 47
// weapon = [ 44 , 43 ] ;
11617: LD_ADDR_VAR 0 2
11621: PUSH
11622: LD_INT 44
11624: PUSH
11625: LD_INT 43
11627: PUSH
11628: EMPTY
11629: LIST
11630: LIST
11631: ST_TO_ADDR
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_btype , b_bunker ] ] ) ;
11632: LD_ADDR_VAR 0 3
11636: PUSH
11637: LD_INT 22
11639: PUSH
11640: LD_EXP 75
11644: PUSH
11645: EMPTY
11646: LIST
11647: LIST
11648: PUSH
11649: LD_INT 30
11651: PUSH
11652: LD_INT 32
11654: PUSH
11655: EMPTY
11656: LIST
11657: LIST
11658: PUSH
11659: EMPTY
11660: LIST
11661: LIST
11662: PPUSH
11663: CALL_OW 69
11667: ST_TO_ADDR
// for i in RU_turret do
11668: LD_ADDR_VAR 0 4
11672: PUSH
11673: LD_VAR 0 3
11677: PUSH
11678: FOR_IN
11679: IFFALSE 11709
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 2 ) ] ) ;
11681: LD_VAR 0 4
11685: PPUSH
11686: LD_VAR 0 2
11690: PUSH
11691: LD_INT 1
11693: PPUSH
11694: LD_INT 2
11696: PPUSH
11697: CALL_OW 12
11701: ARRAY
11702: PPUSH
11703: CALL_OW 431
// end ;
11707: GO 11678
11709: POP
11710: POP
// end ;
11711: LD_VAR 0 1
11715: RET
// export function PrepareRussian2People ; var RU_turret , i , level , un , l ; begin
11716: LD_INT 0
11718: PPUSH
11719: PPUSH
11720: PPUSH
11721: PPUSH
11722: PPUSH
11723: PPUSH
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_btype , b_bunker ] ] ) ;
11724: LD_ADDR_VAR 0 2
11728: PUSH
11729: LD_INT 22
11731: PUSH
11732: LD_EXP 75
11736: PUSH
11737: EMPTY
11738: LIST
11739: LIST
11740: PUSH
11741: LD_INT 30
11743: PUSH
11744: LD_INT 32
11746: PUSH
11747: EMPTY
11748: LIST
11749: LIST
11750: PUSH
11751: EMPTY
11752: LIST
11753: LIST
11754: PPUSH
11755: CALL_OW 69
11759: ST_TO_ADDR
// uc_side = cpu4 ;
11760: LD_ADDR_OWVAR 20
11764: PUSH
11765: LD_EXP 75
11769: ST_TO_ADDR
// uc_nation = 3 ;
11770: LD_ADDR_OWVAR 21
11774: PUSH
11775: LD_INT 3
11777: ST_TO_ADDR
// Level = difficultyC ;
11778: LD_ADDR_VAR 0 4
11782: PUSH
11783: LD_EXP 20
11787: ST_TO_ADDR
// hc_gallery =  ;
11788: LD_ADDR_OWVAR 33
11792: PUSH
11793: LD_STRING 
11795: ST_TO_ADDR
// hc_name =  ;
11796: LD_ADDR_OWVAR 26
11800: PUSH
11801: LD_STRING 
11803: ST_TO_ADDR
// for i in RU_Turret do
11804: LD_ADDR_VAR 0 3
11808: PUSH
11809: LD_VAR 0 2
11813: PUSH
11814: FOR_IN
11815: IFFALSE 11944
// begin if IsInUnit ( i ) = 0 then
11817: LD_VAR 0 3
11821: PPUSH
11822: CALL_OW 310
11826: PUSH
11827: LD_INT 0
11829: EQUAL
11830: IFFALSE 11942
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
11832: LD_ADDR_OWVAR 29
11836: PUSH
11837: LD_INT 9
11839: PPUSH
11840: LD_INT 11
11842: PPUSH
11843: CALL_OW 12
11847: PUSH
11848: LD_INT 10
11850: PPUSH
11851: LD_INT 12
11853: PPUSH
11854: CALL_OW 12
11858: PUSH
11859: EMPTY
11860: LIST
11861: LIST
11862: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
11863: LD_ADDR_OWVAR 31
11867: PUSH
11868: LD_VAR 0 4
11872: PUSH
11873: LD_VAR 0 4
11877: PUSH
11878: LD_VAR 0 4
11882: PUSH
11883: LD_VAR 0 4
11887: PUSH
11888: EMPTY
11889: LIST
11890: LIST
11891: LIST
11892: LIST
11893: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
11894: LD_ADDR_OWVAR 27
11898: PUSH
11899: LD_INT 1
11901: PPUSH
11902: LD_INT 2
11904: PPUSH
11905: CALL_OW 12
11909: ST_TO_ADDR
// hc_class = 1 ;
11910: LD_ADDR_OWVAR 28
11914: PUSH
11915: LD_INT 1
11917: ST_TO_ADDR
// un := CreateHuman ;
11918: LD_ADDR_VAR 0 5
11922: PUSH
11923: CALL_OW 44
11927: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
11928: LD_VAR 0 5
11932: PPUSH
11933: LD_VAR 0 3
11937: PPUSH
11938: CALL_OW 52
// end ; end ;
11942: GO 11814
11944: POP
11945: POP
// for i in ru2depo do
11946: LD_ADDR_VAR 0 3
11950: PUSH
11951: LD_EXP 65
11955: PUSH
11956: FOR_IN
11957: IFFALSE 12134
// begin l = 0 ;
11959: LD_ADDR_VAR 0 6
11963: PUSH
11964: LD_INT 0
11966: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
11967: LD_VAR 0 3
11971: PPUSH
11972: CALL_OW 310
11976: PUSH
11977: LD_INT 0
11979: EQUAL
11980: IFFALSE 12132
// begin repeat begin hc_gallery =  ;
11982: LD_ADDR_OWVAR 33
11986: PUSH
11987: LD_STRING 
11989: ST_TO_ADDR
// hc_name =  ;
11990: LD_ADDR_OWVAR 26
11994: PUSH
11995: LD_STRING 
11997: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
11998: LD_ADDR_OWVAR 29
12002: PUSH
12003: LD_INT 9
12005: PPUSH
12006: LD_INT 11
12008: PPUSH
12009: CALL_OW 12
12013: PUSH
12014: LD_INT 10
12016: PPUSH
12017: LD_INT 12
12019: PPUSH
12020: CALL_OW 12
12024: PUSH
12025: EMPTY
12026: LIST
12027: LIST
12028: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
12029: LD_ADDR_OWVAR 31
12033: PUSH
12034: LD_VAR 0 4
12038: PUSH
12039: LD_VAR 0 4
12043: PUSH
12044: LD_VAR 0 4
12048: PUSH
12049: LD_VAR 0 4
12053: PUSH
12054: EMPTY
12055: LIST
12056: LIST
12057: LIST
12058: LIST
12059: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12060: LD_ADDR_OWVAR 27
12064: PUSH
12065: LD_INT 1
12067: PPUSH
12068: LD_INT 2
12070: PPUSH
12071: CALL_OW 12
12075: ST_TO_ADDR
// hc_class = 2 ;
12076: LD_ADDR_OWVAR 28
12080: PUSH
12081: LD_INT 2
12083: ST_TO_ADDR
// un = CreateHuman ;
12084: LD_ADDR_VAR 0 5
12088: PUSH
12089: CALL_OW 44
12093: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru2depo ) ;
12094: LD_VAR 0 5
12098: PPUSH
12099: LD_EXP 65
12103: PPUSH
12104: CALL_OW 52
// l = l + 1 ;
12108: LD_ADDR_VAR 0 6
12112: PUSH
12113: LD_VAR 0 6
12117: PUSH
12118: LD_INT 1
12120: PLUS
12121: ST_TO_ADDR
// end until l = 4 ;
12122: LD_VAR 0 6
12126: PUSH
12127: LD_INT 4
12129: EQUAL
12130: IFFALSE 11982
// end ; end ;
12132: GO 11956
12134: POP
12135: POP
// for i in ru2armoury do
12136: LD_ADDR_VAR 0 3
12140: PUSH
12141: LD_EXP 68
12145: PUSH
12146: FOR_IN
12147: IFFALSE 12324
// begin l = 0 ;
12149: LD_ADDR_VAR 0 6
12153: PUSH
12154: LD_INT 0
12156: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
12157: LD_VAR 0 3
12161: PPUSH
12162: CALL_OW 310
12166: PUSH
12167: LD_INT 0
12169: EQUAL
12170: IFFALSE 12322
// begin repeat begin hc_gallery =  ;
12172: LD_ADDR_OWVAR 33
12176: PUSH
12177: LD_STRING 
12179: ST_TO_ADDR
// hc_name =  ;
12180: LD_ADDR_OWVAR 26
12184: PUSH
12185: LD_STRING 
12187: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
12188: LD_ADDR_OWVAR 29
12192: PUSH
12193: LD_INT 9
12195: PPUSH
12196: LD_INT 11
12198: PPUSH
12199: CALL_OW 12
12203: PUSH
12204: LD_INT 10
12206: PPUSH
12207: LD_INT 12
12209: PPUSH
12210: CALL_OW 12
12214: PUSH
12215: EMPTY
12216: LIST
12217: LIST
12218: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
12219: LD_ADDR_OWVAR 31
12223: PUSH
12224: LD_VAR 0 4
12228: PUSH
12229: LD_VAR 0 4
12233: PUSH
12234: LD_VAR 0 4
12238: PUSH
12239: LD_VAR 0 4
12243: PUSH
12244: EMPTY
12245: LIST
12246: LIST
12247: LIST
12248: LIST
12249: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12250: LD_ADDR_OWVAR 27
12254: PUSH
12255: LD_INT 1
12257: PPUSH
12258: LD_INT 2
12260: PPUSH
12261: CALL_OW 12
12265: ST_TO_ADDR
// hc_class = 1 ;
12266: LD_ADDR_OWVAR 28
12270: PUSH
12271: LD_INT 1
12273: ST_TO_ADDR
// un = CreateHuman ;
12274: LD_ADDR_VAR 0 5
12278: PUSH
12279: CALL_OW 44
12283: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru2armoury ) ;
12284: LD_VAR 0 5
12288: PPUSH
12289: LD_EXP 68
12293: PPUSH
12294: CALL_OW 52
// l = l + 1 ;
12298: LD_ADDR_VAR 0 6
12302: PUSH
12303: LD_VAR 0 6
12307: PUSH
12308: LD_INT 1
12310: PLUS
12311: ST_TO_ADDR
// end until l = 4 ;
12312: LD_VAR 0 6
12316: PUSH
12317: LD_INT 4
12319: EQUAL
12320: IFFALSE 12172
// end ; end ;
12322: GO 12146
12324: POP
12325: POP
// for i in ru2fab do
12326: LD_ADDR_VAR 0 3
12330: PUSH
12331: LD_EXP 67
12335: PUSH
12336: FOR_IN
12337: IFFALSE 12514
// begin l = 0 ;
12339: LD_ADDR_VAR 0 6
12343: PUSH
12344: LD_INT 0
12346: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
12347: LD_VAR 0 3
12351: PPUSH
12352: CALL_OW 310
12356: PUSH
12357: LD_INT 0
12359: EQUAL
12360: IFFALSE 12512
// begin repeat begin hc_gallery =  ;
12362: LD_ADDR_OWVAR 33
12366: PUSH
12367: LD_STRING 
12369: ST_TO_ADDR
// hc_name =  ;
12370: LD_ADDR_OWVAR 26
12374: PUSH
12375: LD_STRING 
12377: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
12378: LD_ADDR_OWVAR 29
12382: PUSH
12383: LD_INT 9
12385: PPUSH
12386: LD_INT 11
12388: PPUSH
12389: CALL_OW 12
12393: PUSH
12394: LD_INT 10
12396: PPUSH
12397: LD_INT 12
12399: PPUSH
12400: CALL_OW 12
12404: PUSH
12405: EMPTY
12406: LIST
12407: LIST
12408: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
12409: LD_ADDR_OWVAR 31
12413: PUSH
12414: LD_VAR 0 4
12418: PUSH
12419: LD_VAR 0 4
12423: PUSH
12424: LD_VAR 0 4
12428: PUSH
12429: LD_VAR 0 4
12433: PUSH
12434: EMPTY
12435: LIST
12436: LIST
12437: LIST
12438: LIST
12439: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12440: LD_ADDR_OWVAR 27
12444: PUSH
12445: LD_INT 1
12447: PPUSH
12448: LD_INT 2
12450: PPUSH
12451: CALL_OW 12
12455: ST_TO_ADDR
// hc_class = 3 ;
12456: LD_ADDR_OWVAR 28
12460: PUSH
12461: LD_INT 3
12463: ST_TO_ADDR
// un = CreateHuman ;
12464: LD_ADDR_VAR 0 5
12468: PUSH
12469: CALL_OW 44
12473: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru2fab ) ;
12474: LD_VAR 0 5
12478: PPUSH
12479: LD_EXP 67
12483: PPUSH
12484: CALL_OW 52
// l = l + 1 ;
12488: LD_ADDR_VAR 0 6
12492: PUSH
12493: LD_VAR 0 6
12497: PUSH
12498: LD_INT 1
12500: PLUS
12501: ST_TO_ADDR
// end until l = 5 ;
12502: LD_VAR 0 6
12506: PUSH
12507: LD_INT 5
12509: EQUAL
12510: IFFALSE 12362
// end ; end ;
12512: GO 12336
12514: POP
12515: POP
// for i in ru2lab do
12516: LD_ADDR_VAR 0 3
12520: PUSH
12521: LD_EXP 66
12525: PUSH
12526: FOR_IN
12527: IFFALSE 12704
// begin l = 0 ;
12529: LD_ADDR_VAR 0 6
12533: PUSH
12534: LD_INT 0
12536: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
12537: LD_VAR 0 3
12541: PPUSH
12542: CALL_OW 310
12546: PUSH
12547: LD_INT 0
12549: EQUAL
12550: IFFALSE 12702
// begin repeat begin hc_gallery =  ;
12552: LD_ADDR_OWVAR 33
12556: PUSH
12557: LD_STRING 
12559: ST_TO_ADDR
// hc_name =  ;
12560: LD_ADDR_OWVAR 26
12564: PUSH
12565: LD_STRING 
12567: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
12568: LD_ADDR_OWVAR 29
12572: PUSH
12573: LD_INT 9
12575: PPUSH
12576: LD_INT 11
12578: PPUSH
12579: CALL_OW 12
12583: PUSH
12584: LD_INT 10
12586: PPUSH
12587: LD_INT 12
12589: PPUSH
12590: CALL_OW 12
12594: PUSH
12595: EMPTY
12596: LIST
12597: LIST
12598: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
12599: LD_ADDR_OWVAR 31
12603: PUSH
12604: LD_VAR 0 4
12608: PUSH
12609: LD_VAR 0 4
12613: PUSH
12614: LD_VAR 0 4
12618: PUSH
12619: LD_VAR 0 4
12623: PUSH
12624: EMPTY
12625: LIST
12626: LIST
12627: LIST
12628: LIST
12629: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12630: LD_ADDR_OWVAR 27
12634: PUSH
12635: LD_INT 1
12637: PPUSH
12638: LD_INT 2
12640: PPUSH
12641: CALL_OW 12
12645: ST_TO_ADDR
// hc_class = 4 ;
12646: LD_ADDR_OWVAR 28
12650: PUSH
12651: LD_INT 4
12653: ST_TO_ADDR
// un = CreateHuman ;
12654: LD_ADDR_VAR 0 5
12658: PUSH
12659: CALL_OW 44
12663: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru2lab ) ;
12664: LD_VAR 0 5
12668: PPUSH
12669: LD_EXP 66
12673: PPUSH
12674: CALL_OW 52
// l = l + 1 ;
12678: LD_ADDR_VAR 0 6
12682: PUSH
12683: LD_VAR 0 6
12687: PUSH
12688: LD_INT 1
12690: PLUS
12691: ST_TO_ADDR
// end until l = 4 ;
12692: LD_VAR 0 6
12696: PUSH
12697: LD_INT 4
12699: EQUAL
12700: IFFALSE 12552
// end ; end ;
12702: GO 12526
12704: POP
12705: POP
// end ;
12706: LD_VAR 0 1
12710: RET
// every 1 1$0 trigger KirovAI = 1 do var l , level , un , i ;
12711: LD_EXP 19
12715: PUSH
12716: LD_INT 1
12718: EQUAL
12719: IFFALSE 12973
12721: GO 12723
12723: DISABLE
12724: LD_INT 0
12726: PPUSH
12727: PPUSH
12728: PPUSH
12729: PPUSH
// begin enable ;
12730: ENABLE
// if GetSide ( ru2fab ) = cpu4 then
12731: LD_EXP 67
12735: PPUSH
12736: CALL_OW 255
12740: PUSH
12741: LD_EXP 75
12745: EQUAL
12746: IFFALSE 12973
// begin for i in ru2fab do
12748: LD_ADDR_VAR 0 4
12752: PUSH
12753: LD_EXP 67
12757: PUSH
12758: FOR_IN
12759: IFFALSE 12971
// begin l = 0 ;
12761: LD_ADDR_VAR 0 1
12765: PUSH
12766: LD_INT 0
12768: ST_TO_ADDR
// Level = difficultyC ;
12769: LD_ADDR_VAR 0 2
12773: PUSH
12774: LD_EXP 20
12778: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
12779: LD_VAR 0 4
12783: PPUSH
12784: CALL_OW 310
12788: PUSH
12789: LD_INT 0
12791: EQUAL
12792: IFFALSE 12969
// begin repeat begin wait ( 0 0$1 ) ;
12794: LD_INT 35
12796: PPUSH
12797: CALL_OW 67
// uc_side = cpu4 ;
12801: LD_ADDR_OWVAR 20
12805: PUSH
12806: LD_EXP 75
12810: ST_TO_ADDR
// uc_nation = 3 ;
12811: LD_ADDR_OWVAR 21
12815: PUSH
12816: LD_INT 3
12818: ST_TO_ADDR
// hc_gallery =  ;
12819: LD_ADDR_OWVAR 33
12823: PUSH
12824: LD_STRING 
12826: ST_TO_ADDR
// hc_name =  ;
12827: LD_ADDR_OWVAR 26
12831: PUSH
12832: LD_STRING 
12834: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
12835: LD_ADDR_OWVAR 29
12839: PUSH
12840: LD_INT 9
12842: PPUSH
12843: LD_INT 11
12845: PPUSH
12846: CALL_OW 12
12850: PUSH
12851: LD_INT 10
12853: PPUSH
12854: LD_INT 12
12856: PPUSH
12857: CALL_OW 12
12861: PUSH
12862: EMPTY
12863: LIST
12864: LIST
12865: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
12866: LD_ADDR_OWVAR 31
12870: PUSH
12871: LD_VAR 0 2
12875: PUSH
12876: LD_VAR 0 2
12880: PUSH
12881: LD_VAR 0 2
12885: PUSH
12886: LD_VAR 0 2
12890: PUSH
12891: EMPTY
12892: LIST
12893: LIST
12894: LIST
12895: LIST
12896: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12897: LD_ADDR_OWVAR 27
12901: PUSH
12902: LD_INT 1
12904: PPUSH
12905: LD_INT 2
12907: PPUSH
12908: CALL_OW 12
12912: ST_TO_ADDR
// hc_class = 3 ;
12913: LD_ADDR_OWVAR 28
12917: PUSH
12918: LD_INT 3
12920: ST_TO_ADDR
// un = CreateHuman ;
12921: LD_ADDR_VAR 0 3
12925: PUSH
12926: CALL_OW 44
12930: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru2fab ) ;
12931: LD_VAR 0 3
12935: PPUSH
12936: LD_EXP 67
12940: PPUSH
12941: CALL_OW 52
// l = l + 1 ;
12945: LD_ADDR_VAR 0 1
12949: PUSH
12950: LD_VAR 0 1
12954: PUSH
12955: LD_INT 1
12957: PLUS
12958: ST_TO_ADDR
// end until l = 5 ;
12959: LD_VAR 0 1
12963: PUSH
12964: LD_INT 5
12966: EQUAL
12967: IFFALSE 12794
// end ; end ;
12969: GO 12758
12971: POP
12972: POP
// end ; end ; end_of_file
12973: PPOPN 4
12975: END
// every 1 do
12976: GO 12978
12978: DISABLE
// begin SelectSide ;
12979: CALL 12988 0 0
// Resetfog ;
12983: CALL_OW 335
// end ;
12987: END
// export player1 , player2 , player3 , cpu1 , cpu2 , cpu3 , cpu4 , enabled_colours ; export function SelectSide ; var i , un ; begin
12988: LD_INT 0
12990: PPUSH
12991: PPUSH
12992: PPUSH
// enabled_colours = [ ] ;
12993: LD_ADDR_EXP 76
12997: PUSH
12998: EMPTY
12999: ST_TO_ADDR
// if OmicronAI = 1 then
13000: LD_EXP 16
13004: PUSH
13005: LD_INT 1
13007: EQUAL
13008: IFFALSE 13198
// begin for i = 1 to 8 do
13010: LD_ADDR_VAR 0 2
13014: PUSH
13015: DOUBLE
13016: LD_INT 1
13018: DEC
13019: ST_TO_ADDR
13020: LD_INT 8
13022: PUSH
13023: FOR_TO
13024: IFFALSE 13138
// begin if Side_Positions [ i ] = 0 then
13026: LD_EXP 28
13030: PUSH
13031: LD_VAR 0 2
13035: ARRAY
13036: PUSH
13037: LD_INT 0
13039: EQUAL
13040: IFFALSE 13058
// enabled_colours = enabled_colours ^ i ;
13042: LD_ADDR_EXP 76
13046: PUSH
13047: LD_EXP 76
13051: PUSH
13052: LD_VAR 0 2
13056: ADD
13057: ST_TO_ADDR
// if Side_Positions [ i ] = 2 then
13058: LD_EXP 28
13062: PUSH
13063: LD_VAR 0 2
13067: ARRAY
13068: PUSH
13069: LD_INT 2
13071: EQUAL
13072: IFFALSE 13084
// player1 = i ;
13074: LD_ADDR_EXP 69
13078: PUSH
13079: LD_VAR 0 2
13083: ST_TO_ADDR
// if Side_Positions [ i ] = 3 then
13084: LD_EXP 28
13088: PUSH
13089: LD_VAR 0 2
13093: ARRAY
13094: PUSH
13095: LD_INT 3
13097: EQUAL
13098: IFFALSE 13110
// player2 = i ;
13100: LD_ADDR_EXP 70
13104: PUSH
13105: LD_VAR 0 2
13109: ST_TO_ADDR
// if Side_Positions [ i ] = 4 then
13110: LD_EXP 28
13114: PUSH
13115: LD_VAR 0 2
13119: ARRAY
13120: PUSH
13121: LD_INT 4
13123: EQUAL
13124: IFFALSE 13136
// player3 = i ;
13126: LD_ADDR_EXP 71
13130: PUSH
13131: LD_VAR 0 2
13135: ST_TO_ADDR
// end ;
13136: GO 13023
13138: POP
13139: POP
// if not Side_Positions [ 6 ] > 0 then
13140: LD_EXP 28
13144: PUSH
13145: LD_INT 6
13147: ARRAY
13148: PUSH
13149: LD_INT 0
13151: GREATER
13152: NOT
13153: IFFALSE 13165
// cpu1 := 6 else
13155: LD_ADDR_EXP 72
13159: PUSH
13160: LD_INT 6
13162: ST_TO_ADDR
13163: GO 13198
// if not Side_Positions [ 7 ] > 0 then
13165: LD_EXP 28
13169: PUSH
13170: LD_INT 7
13172: ARRAY
13173: PUSH
13174: LD_INT 0
13176: GREATER
13177: NOT
13178: IFFALSE 13190
// cpu1 := 7 else
13180: LD_ADDR_EXP 72
13184: PUSH
13185: LD_INT 7
13187: ST_TO_ADDR
13188: GO 13198
// cpu1 := 3 ;
13190: LD_ADDR_EXP 72
13194: PUSH
13195: LD_INT 3
13197: ST_TO_ADDR
// end ; if ArabianAI = 1 then
13198: LD_EXP 17
13202: PUSH
13203: LD_INT 1
13205: EQUAL
13206: IFFALSE 13396
// begin for i = 1 to 8 do
13208: LD_ADDR_VAR 0 2
13212: PUSH
13213: DOUBLE
13214: LD_INT 1
13216: DEC
13217: ST_TO_ADDR
13218: LD_INT 8
13220: PUSH
13221: FOR_TO
13222: IFFALSE 13336
// begin if Side_Positions [ i ] = 0 then
13224: LD_EXP 28
13228: PUSH
13229: LD_VAR 0 2
13233: ARRAY
13234: PUSH
13235: LD_INT 0
13237: EQUAL
13238: IFFALSE 13256
// enabled_colours = enabled_colours ^ i ;
13240: LD_ADDR_EXP 76
13244: PUSH
13245: LD_EXP 76
13249: PUSH
13250: LD_VAR 0 2
13254: ADD
13255: ST_TO_ADDR
// if Side_Positions [ i ] = 2 then
13256: LD_EXP 28
13260: PUSH
13261: LD_VAR 0 2
13265: ARRAY
13266: PUSH
13267: LD_INT 2
13269: EQUAL
13270: IFFALSE 13282
// player1 = i ;
13272: LD_ADDR_EXP 69
13276: PUSH
13277: LD_VAR 0 2
13281: ST_TO_ADDR
// if Side_Positions [ i ] = 3 then
13282: LD_EXP 28
13286: PUSH
13287: LD_VAR 0 2
13291: ARRAY
13292: PUSH
13293: LD_INT 3
13295: EQUAL
13296: IFFALSE 13308
// player2 = i ;
13298: LD_ADDR_EXP 70
13302: PUSH
13303: LD_VAR 0 2
13307: ST_TO_ADDR
// if Side_Positions [ i ] = 4 then
13308: LD_EXP 28
13312: PUSH
13313: LD_VAR 0 2
13317: ARRAY
13318: PUSH
13319: LD_INT 4
13321: EQUAL
13322: IFFALSE 13334
// player3 = i ;
13324: LD_ADDR_EXP 71
13328: PUSH
13329: LD_VAR 0 2
13333: ST_TO_ADDR
// end ;
13334: GO 13221
13336: POP
13337: POP
// if not Side_Positions [ 6 ] > 0 then
13338: LD_EXP 28
13342: PUSH
13343: LD_INT 6
13345: ARRAY
13346: PUSH
13347: LD_INT 0
13349: GREATER
13350: NOT
13351: IFFALSE 13363
// cpu2 := 1 else
13353: LD_ADDR_EXP 73
13357: PUSH
13358: LD_INT 1
13360: ST_TO_ADDR
13361: GO 13396
// if not Side_Positions [ 7 ] > 0 then
13363: LD_EXP 28
13367: PUSH
13368: LD_INT 7
13370: ARRAY
13371: PUSH
13372: LD_INT 0
13374: GREATER
13375: NOT
13376: IFFALSE 13388
// cpu2 := 2 else
13378: LD_ADDR_EXP 73
13382: PUSH
13383: LD_INT 2
13385: ST_TO_ADDR
13386: GO 13396
// cpu2 := 3 ;
13388: LD_ADDR_EXP 73
13392: PUSH
13393: LD_INT 3
13395: ST_TO_ADDR
// end ; if KirovAI = 1 then
13396: LD_EXP 19
13400: PUSH
13401: LD_INT 1
13403: EQUAL
13404: IFFALSE 13594
// begin for i = 1 to 8 do
13406: LD_ADDR_VAR 0 2
13410: PUSH
13411: DOUBLE
13412: LD_INT 1
13414: DEC
13415: ST_TO_ADDR
13416: LD_INT 8
13418: PUSH
13419: FOR_TO
13420: IFFALSE 13534
// begin if Side_Positions [ i ] = 0 then
13422: LD_EXP 28
13426: PUSH
13427: LD_VAR 0 2
13431: ARRAY
13432: PUSH
13433: LD_INT 0
13435: EQUAL
13436: IFFALSE 13454
// enabled_colours = enabled_colours ^ i ;
13438: LD_ADDR_EXP 76
13442: PUSH
13443: LD_EXP 76
13447: PUSH
13448: LD_VAR 0 2
13452: ADD
13453: ST_TO_ADDR
// if Side_Positions [ i ] = 2 then
13454: LD_EXP 28
13458: PUSH
13459: LD_VAR 0 2
13463: ARRAY
13464: PUSH
13465: LD_INT 2
13467: EQUAL
13468: IFFALSE 13480
// player1 = i ;
13470: LD_ADDR_EXP 69
13474: PUSH
13475: LD_VAR 0 2
13479: ST_TO_ADDR
// if Side_Positions [ i ] = 3 then
13480: LD_EXP 28
13484: PUSH
13485: LD_VAR 0 2
13489: ARRAY
13490: PUSH
13491: LD_INT 3
13493: EQUAL
13494: IFFALSE 13506
// player2 = i ;
13496: LD_ADDR_EXP 70
13500: PUSH
13501: LD_VAR 0 2
13505: ST_TO_ADDR
// if Side_Positions [ i ] = 4 then
13506: LD_EXP 28
13510: PUSH
13511: LD_VAR 0 2
13515: ARRAY
13516: PUSH
13517: LD_INT 4
13519: EQUAL
13520: IFFALSE 13532
// player3 = i ;
13522: LD_ADDR_EXP 71
13526: PUSH
13527: LD_VAR 0 2
13531: ST_TO_ADDR
// end ;
13532: GO 13419
13534: POP
13535: POP
// if not Side_Positions [ 6 ] > 0 then
13536: LD_EXP 28
13540: PUSH
13541: LD_INT 6
13543: ARRAY
13544: PUSH
13545: LD_INT 0
13547: GREATER
13548: NOT
13549: IFFALSE 13561
// cpu4 := 5 else
13551: LD_ADDR_EXP 75
13555: PUSH
13556: LD_INT 5
13558: ST_TO_ADDR
13559: GO 13594
// if not Side_Positions [ 7 ] > 0 then
13561: LD_EXP 28
13565: PUSH
13566: LD_INT 7
13568: ARRAY
13569: PUSH
13570: LD_INT 0
13572: GREATER
13573: NOT
13574: IFFALSE 13586
// cpu4 := 6 else
13576: LD_ADDR_EXP 75
13580: PUSH
13581: LD_INT 6
13583: ST_TO_ADDR
13584: GO 13594
// cpu4 := 7 ;
13586: LD_ADDR_EXP 75
13590: PUSH
13591: LD_INT 7
13593: ST_TO_ADDR
// end ; if BeriaAI = 1 then
13594: LD_EXP 18
13598: PUSH
13599: LD_INT 1
13601: EQUAL
13602: IFFALSE 13792
// begin for i = 1 to 8 do
13604: LD_ADDR_VAR 0 2
13608: PUSH
13609: DOUBLE
13610: LD_INT 1
13612: DEC
13613: ST_TO_ADDR
13614: LD_INT 8
13616: PUSH
13617: FOR_TO
13618: IFFALSE 13732
// begin if Side_Positions [ i ] = 0 then
13620: LD_EXP 28
13624: PUSH
13625: LD_VAR 0 2
13629: ARRAY
13630: PUSH
13631: LD_INT 0
13633: EQUAL
13634: IFFALSE 13652
// enabled_colours = enabled_colours ^ i ;
13636: LD_ADDR_EXP 76
13640: PUSH
13641: LD_EXP 76
13645: PUSH
13646: LD_VAR 0 2
13650: ADD
13651: ST_TO_ADDR
// if Side_Positions [ i ] = 2 then
13652: LD_EXP 28
13656: PUSH
13657: LD_VAR 0 2
13661: ARRAY
13662: PUSH
13663: LD_INT 2
13665: EQUAL
13666: IFFALSE 13678
// player1 = i ;
13668: LD_ADDR_EXP 69
13672: PUSH
13673: LD_VAR 0 2
13677: ST_TO_ADDR
// if Side_Positions [ i ] = 3 then
13678: LD_EXP 28
13682: PUSH
13683: LD_VAR 0 2
13687: ARRAY
13688: PUSH
13689: LD_INT 3
13691: EQUAL
13692: IFFALSE 13704
// player2 = i ;
13694: LD_ADDR_EXP 70
13698: PUSH
13699: LD_VAR 0 2
13703: ST_TO_ADDR
// if Side_Positions [ i ] = 4 then
13704: LD_EXP 28
13708: PUSH
13709: LD_VAR 0 2
13713: ARRAY
13714: PUSH
13715: LD_INT 4
13717: EQUAL
13718: IFFALSE 13730
// player3 = i ;
13720: LD_ADDR_EXP 71
13724: PUSH
13725: LD_VAR 0 2
13729: ST_TO_ADDR
// end ;
13730: GO 13617
13732: POP
13733: POP
// if not Side_Positions [ 6 ] > 0 then
13734: LD_EXP 28
13738: PUSH
13739: LD_INT 6
13741: ARRAY
13742: PUSH
13743: LD_INT 0
13745: GREATER
13746: NOT
13747: IFFALSE 13759
// cpu3 := 8 else
13749: LD_ADDR_EXP 74
13753: PUSH
13754: LD_INT 8
13756: ST_TO_ADDR
13757: GO 13792
// if not Side_Positions [ 7 ] > 0 then
13759: LD_EXP 28
13763: PUSH
13764: LD_INT 7
13766: ARRAY
13767: PUSH
13768: LD_INT 0
13770: GREATER
13771: NOT
13772: IFFALSE 13784
// cpu3 := 4 else
13774: LD_ADDR_EXP 74
13778: PUSH
13779: LD_INT 4
13781: ST_TO_ADDR
13782: GO 13792
// cpu3 := 1 ;
13784: LD_ADDR_EXP 74
13788: PUSH
13789: LD_INT 1
13791: ST_TO_ADDR
// end ; end ;
13792: LD_VAR 0 1
13796: RET
// export function ResAllTechs ( side , lab ) ; var i , tech , cout ; begin
13797: LD_INT 0
13799: PPUSH
13800: PPUSH
13801: PPUSH
13802: PPUSH
// for i = 1 to 72 do
13803: LD_ADDR_VAR 0 4
13807: PUSH
13808: DOUBLE
13809: LD_INT 1
13811: DEC
13812: ST_TO_ADDR
13813: LD_INT 72
13815: PUSH
13816: FOR_TO
13817: IFFALSE 13855
// begin if GetTech ( i , side ) = state_enabled then
13819: LD_VAR 0 4
13823: PPUSH
13824: LD_VAR 0 1
13828: PPUSH
13829: CALL_OW 321
13833: PUSH
13834: LD_INT 1
13836: EQUAL
13837: IFFALSE 13853
// AddComResearch ( lab , i ) ;
13839: LD_VAR 0 2
13843: PPUSH
13844: LD_VAR 0 4
13848: PPUSH
13849: CALL_OW 184
// end ;
13853: GO 13816
13855: POP
13856: POP
// cout = cout + 1 ;
13857: LD_ADDR_VAR 0 6
13861: PUSH
13862: LD_VAR 0 6
13866: PUSH
13867: LD_INT 1
13869: PLUS
13870: ST_TO_ADDR
// Wait ( 0 0$01 ) ;
13871: LD_INT 35
13873: PPUSH
13874: CALL_OW 67
// end ;
13878: LD_VAR 0 3
13882: RET
// every 0 0$1 trigger OmicronAI = 1 do
13883: LD_EXP 16
13887: PUSH
13888: LD_INT 1
13890: EQUAL
13891: IFFALSE 13910
13893: GO 13895
13895: DISABLE
// begin ResAllTechs ( cpu1 , amlab ) ;
13896: LD_EXP 72
13900: PPUSH
13901: LD_EXP 53
13905: PPUSH
13906: CALL 13797 0 2
// end ;
13910: END
// every 0 0$1 trigger ArabianAI = 1 do
13911: LD_EXP 17
13915: PUSH
13916: LD_INT 1
13918: EQUAL
13919: IFFALSE 13938
13921: GO 13923
13923: DISABLE
// begin ResAllTechs ( cpu2 , arlab ) ;
13924: LD_EXP 73
13928: PPUSH
13929: LD_EXP 58
13933: PPUSH
13934: CALL 13797 0 2
// end ;
13938: END
// every 0 0$1 trigger BeriaAI = 1 do
13939: LD_EXP 18
13943: PUSH
13944: LD_INT 1
13946: EQUAL
13947: IFFALSE 13966
13949: GO 13951
13951: DISABLE
// begin ResAllTechs ( cpu3 , ru1lab ) ;
13952: LD_EXP 74
13956: PPUSH
13957: LD_EXP 62
13961: PPUSH
13962: CALL 13797 0 2
// end ;
13966: END
// every 0 0$1 trigger KirovAI = 1 do
13967: LD_EXP 19
13971: PUSH
13972: LD_INT 1
13974: EQUAL
13975: IFFALSE 13980
13977: GO 13979
13979: DISABLE
// begin end ; end_of_file
13980: END
// every 0 0$3 trigger OmicronAI = 1 do
13981: LD_EXP 16
13985: PUSH
13986: LD_INT 1
13988: EQUAL
13989: IFFALSE 14006
13991: GO 13993
13993: DISABLE
// begin wait ( 0 0$1 ) ;
13994: LD_INT 35
13996: PPUSH
13997: CALL_OW 67
// enable ;
14001: ENABLE
// RepairBuildingAmerican ;
14002: CALL 14007 0 0
// end ;
14006: END
// export DestroyRepairAM ; export function RepairBuildingAmerican ; var enginer_list , scientist_list , buildings , i , un ; begin
14007: LD_INT 0
14009: PPUSH
14010: PPUSH
14011: PPUSH
14012: PPUSH
14013: PPUSH
14014: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_class , 2 ] ] ) ;
14015: LD_ADDR_VAR 0 2
14019: PUSH
14020: LD_INT 22
14022: PUSH
14023: LD_EXP 72
14027: PUSH
14028: EMPTY
14029: LIST
14030: LIST
14031: PUSH
14032: LD_INT 25
14034: PUSH
14035: LD_INT 2
14037: PUSH
14038: EMPTY
14039: LIST
14040: LIST
14041: PUSH
14042: EMPTY
14043: LIST
14044: LIST
14045: PPUSH
14046: CALL_OW 69
14050: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_class , 4 ] ] ) ;
14051: LD_ADDR_VAR 0 3
14055: PUSH
14056: LD_INT 22
14058: PUSH
14059: LD_EXP 72
14063: PUSH
14064: EMPTY
14065: LIST
14066: LIST
14067: PUSH
14068: LD_INT 25
14070: PUSH
14071: LD_INT 4
14073: PUSH
14074: EMPTY
14075: LIST
14076: LIST
14077: PUSH
14078: EMPTY
14079: LIST
14080: LIST
14081: PPUSH
14082: CALL_OW 69
14086: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu1 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
14087: LD_ADDR_VAR 0 4
14091: PUSH
14092: LD_INT 22
14094: PUSH
14095: LD_EXP 72
14099: PUSH
14100: EMPTY
14101: LIST
14102: LIST
14103: PUSH
14104: LD_INT 21
14106: PUSH
14107: LD_INT 3
14109: PUSH
14110: EMPTY
14111: LIST
14112: LIST
14113: PUSH
14114: LD_INT 3
14116: PUSH
14117: LD_INT 24
14119: PUSH
14120: LD_INT 1000
14122: PUSH
14123: EMPTY
14124: LIST
14125: LIST
14126: PUSH
14127: EMPTY
14128: LIST
14129: LIST
14130: PUSH
14131: EMPTY
14132: LIST
14133: LIST
14134: LIST
14135: PUSH
14136: EMPTY
14137: LIST
14138: PPUSH
14139: CALL_OW 69
14143: ST_TO_ADDR
// DestroyRepairAM = 0 ;
14144: LD_ADDR_EXP 77
14148: PUSH
14149: LD_INT 0
14151: ST_TO_ADDR
// if buildings > 0 then
14152: LD_VAR 0 4
14156: PUSH
14157: LD_INT 0
14159: GREATER
14160: IFFALSE 14295
// begin for i = 1 to enginer_list do
14162: LD_ADDR_VAR 0 5
14166: PUSH
14167: DOUBLE
14168: LD_INT 1
14170: DEC
14171: ST_TO_ADDR
14172: LD_VAR 0 2
14176: PUSH
14177: FOR_TO
14178: IFFALSE 14293
// begin ComExitBuilding ( enginer_list [ i ] ) ;
14180: LD_VAR 0 2
14184: PUSH
14185: LD_VAR 0 5
14189: ARRAY
14190: PPUSH
14191: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
14195: LD_VAR 0 2
14199: PUSH
14200: LD_VAR 0 5
14204: ARRAY
14205: PPUSH
14206: LD_VAR 0 4
14210: PUSH
14211: LD_INT 1
14213: ARRAY
14214: PPUSH
14215: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
14219: LD_VAR 0 2
14223: PUSH
14224: LD_VAR 0 5
14228: ARRAY
14229: PPUSH
14230: CALL_OW 256
14234: PUSH
14235: LD_INT 800
14237: LESS
14238: IFFALSE 14273
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
14240: LD_VAR 0 3
14244: PUSH
14245: LD_INT 1
14247: ARRAY
14248: PPUSH
14249: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , AmHealZone ) ;
14253: LD_VAR 0 2
14257: PUSH
14258: LD_VAR 0 5
14262: ARRAY
14263: PPUSH
14264: LD_INT 7
14266: PPUSH
14267: CALL_OW 113
// end else
14271: GO 14291
// ComEnterUnit ( scientist_list [ 1 ] , amlab ) ;
14273: LD_VAR 0 3
14277: PUSH
14278: LD_INT 1
14280: ARRAY
14281: PPUSH
14282: LD_EXP 53
14286: PPUSH
14287: CALL_OW 120
// end ;
14291: GO 14177
14293: POP
14294: POP
// end ; for i = 1 to enginer_list do
14295: LD_ADDR_VAR 0 5
14299: PUSH
14300: DOUBLE
14301: LD_INT 1
14303: DEC
14304: ST_TO_ADDR
14305: LD_VAR 0 2
14309: PUSH
14310: FOR_TO
14311: IFFALSE 14472
// begin wait ( 0 0$3 ) ;
14313: LD_INT 105
14315: PPUSH
14316: CALL_OW 67
// if buildings = 0 and DestroyRepairAM = 0 then
14320: LD_VAR 0 4
14324: PUSH
14325: LD_INT 0
14327: EQUAL
14328: PUSH
14329: LD_EXP 77
14333: PUSH
14334: LD_INT 0
14336: EQUAL
14337: AND
14338: IFFALSE 14362
// begin ComEnterUnit ( enginer_list [ i ] , amdepo ) ;
14340: LD_VAR 0 2
14344: PUSH
14345: LD_VAR 0 5
14349: ARRAY
14350: PPUSH
14351: LD_EXP 52
14355: PPUSH
14356: CALL_OW 120
// end else
14360: GO 14377
// begin ComExitBuilding ( enginer_list [ i ] ) ;
14362: LD_VAR 0 2
14366: PUSH
14367: LD_VAR 0 5
14371: ARRAY
14372: PPUSH
14373: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
14377: LD_VAR 0 2
14381: PUSH
14382: LD_VAR 0 5
14386: ARRAY
14387: PPUSH
14388: CALL_OW 256
14392: PUSH
14393: LD_INT 1000
14395: LESS
14396: IFFALSE 14431
// begin ComMoveToArea ( enginer_List [ i ] , AmHealZone ) ;
14398: LD_VAR 0 2
14402: PUSH
14403: LD_VAR 0 5
14407: ARRAY
14408: PPUSH
14409: LD_INT 7
14411: PPUSH
14412: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
14416: LD_VAR 0 3
14420: PUSH
14421: LD_INT 1
14423: ARRAY
14424: PPUSH
14425: CALL_OW 122
// end else
14429: GO 14470
// if GetLives ( enginer_list [ i ] ) = 1000 then
14431: LD_VAR 0 2
14435: PUSH
14436: LD_VAR 0 5
14440: ARRAY
14441: PPUSH
14442: CALL_OW 256
14446: PUSH
14447: LD_INT 1000
14449: EQUAL
14450: IFFALSE 14470
// begin ComEnterUnit ( scientist_list [ 1 ] , amlab ) ;
14452: LD_VAR 0 3
14456: PUSH
14457: LD_INT 1
14459: ARRAY
14460: PPUSH
14461: LD_EXP 53
14465: PPUSH
14466: CALL_OW 120
// end ; end ;
14470: GO 14310
14472: POP
14473: POP
// end ;
14474: LD_VAR 0 1
14478: RET
// every 0 0$3 trigger OmicronAI = 1 do var i , l ;
14479: LD_EXP 16
14483: PUSH
14484: LD_INT 1
14486: EQUAL
14487: IFFALSE 14564
14489: GO 14491
14491: DISABLE
14492: LD_INT 0
14494: PPUSH
14495: PPUSH
// begin enable ;
14496: ENABLE
// for i in FilterUnitsInArea ( AmericanBase , [ [ f_class , 1 ] , [ f_side , cpu1 ] ] ) do
14497: LD_ADDR_VAR 0 1
14501: PUSH
14502: LD_INT 6
14504: PPUSH
14505: LD_INT 25
14507: PUSH
14508: LD_INT 1
14510: PUSH
14511: EMPTY
14512: LIST
14513: LIST
14514: PUSH
14515: LD_INT 22
14517: PUSH
14518: LD_EXP 72
14522: PUSH
14523: EMPTY
14524: LIST
14525: LIST
14526: PUSH
14527: EMPTY
14528: LIST
14529: LIST
14530: PPUSH
14531: CALL_OW 70
14535: PUSH
14536: FOR_IN
14537: IFFALSE 14562
// begin wait ( 0 0$1 ) ;
14539: LD_INT 35
14541: PPUSH
14542: CALL_OW 67
// ComEnterUnit ( i , amarmoury ) ;
14546: LD_VAR 0 1
14550: PPUSH
14551: LD_EXP 55
14555: PPUSH
14556: CALL_OW 120
// end ;
14560: GO 14536
14562: POP
14563: POP
// end ;
14564: PPOPN 2
14566: END
// export function AmericanBuildVehicle ; begin
14567: LD_INT 0
14569: PPUSH
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
14570: LD_EXP 54
14574: PPUSH
14575: LD_INT 3
14577: PPUSH
14578: LD_INT 1
14580: PPUSH
14581: LD_INT 1
14583: PPUSH
14584: LD_INT 5
14586: PPUSH
14587: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
14591: LD_EXP 54
14595: PPUSH
14596: LD_INT 3
14598: PPUSH
14599: LD_INT 1
14601: PPUSH
14602: LD_INT 1
14604: PPUSH
14605: LD_INT 5
14607: PPUSH
14608: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
14612: LD_EXP 54
14616: PPUSH
14617: LD_INT 3
14619: PPUSH
14620: LD_INT 1
14622: PPUSH
14623: LD_INT 1
14625: PPUSH
14626: LD_INT 5
14628: PPUSH
14629: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 4 ) ;
14633: LD_EXP 54
14637: PPUSH
14638: LD_INT 3
14640: PPUSH
14641: LD_INT 1
14643: PPUSH
14644: LD_INT 1
14646: PPUSH
14647: LD_INT 4
14649: PPUSH
14650: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 4 ) ;
14654: LD_EXP 54
14658: PPUSH
14659: LD_INT 3
14661: PPUSH
14662: LD_INT 1
14664: PPUSH
14665: LD_INT 1
14667: PPUSH
14668: LD_INT 4
14670: PPUSH
14671: CALL_OW 185
// end ;
14675: LD_VAR 0 1
14679: RET
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 0 do
14680: LD_INT 22
14682: PUSH
14683: LD_EXP 72
14687: PUSH
14688: EMPTY
14689: LIST
14690: LIST
14691: PUSH
14692: LD_INT 21
14694: PUSH
14695: LD_INT 2
14697: PUSH
14698: EMPTY
14699: LIST
14700: LIST
14701: PUSH
14702: EMPTY
14703: LIST
14704: LIST
14705: PPUSH
14706: CALL_OW 69
14710: PUSH
14711: LD_INT 0
14713: EQUAL
14714: IFFALSE 14825
14716: GO 14718
14718: DISABLE
// begin enable ;
14719: ENABLE
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
14720: LD_EXP 54
14724: PPUSH
14725: LD_INT 3
14727: PPUSH
14728: LD_INT 1
14730: PPUSH
14731: LD_INT 1
14733: PPUSH
14734: LD_INT 5
14736: PPUSH
14737: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
14741: LD_EXP 54
14745: PPUSH
14746: LD_INT 3
14748: PPUSH
14749: LD_INT 1
14751: PPUSH
14752: LD_INT 1
14754: PPUSH
14755: LD_INT 5
14757: PPUSH
14758: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
14762: LD_EXP 54
14766: PPUSH
14767: LD_INT 3
14769: PPUSH
14770: LD_INT 1
14772: PPUSH
14773: LD_INT 1
14775: PPUSH
14776: LD_INT 5
14778: PPUSH
14779: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 4 ) ;
14783: LD_EXP 54
14787: PPUSH
14788: LD_INT 3
14790: PPUSH
14791: LD_INT 1
14793: PPUSH
14794: LD_INT 1
14796: PPUSH
14797: LD_INT 4
14799: PPUSH
14800: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 4 ) ;
14804: LD_EXP 54
14808: PPUSH
14809: LD_INT 3
14811: PPUSH
14812: LD_INT 1
14814: PPUSH
14815: LD_INT 1
14817: PPUSH
14818: LD_INT 4
14820: PPUSH
14821: CALL_OW 185
// end ;
14825: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 1 do
14826: LD_INT 22
14828: PUSH
14829: LD_EXP 72
14833: PUSH
14834: EMPTY
14835: LIST
14836: LIST
14837: PUSH
14838: LD_INT 21
14840: PUSH
14841: LD_INT 2
14843: PUSH
14844: EMPTY
14845: LIST
14846: LIST
14847: PUSH
14848: EMPTY
14849: LIST
14850: LIST
14851: PPUSH
14852: CALL_OW 69
14856: PUSH
14857: LD_INT 1
14859: EQUAL
14860: IFFALSE 14950
14862: GO 14864
14864: DISABLE
// begin enable ;
14865: ENABLE
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
14866: LD_EXP 54
14870: PPUSH
14871: LD_INT 3
14873: PPUSH
14874: LD_INT 1
14876: PPUSH
14877: LD_INT 1
14879: PPUSH
14880: LD_INT 5
14882: PPUSH
14883: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
14887: LD_EXP 54
14891: PPUSH
14892: LD_INT 3
14894: PPUSH
14895: LD_INT 1
14897: PPUSH
14898: LD_INT 1
14900: PPUSH
14901: LD_INT 5
14903: PPUSH
14904: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
14908: LD_EXP 54
14912: PPUSH
14913: LD_INT 3
14915: PPUSH
14916: LD_INT 1
14918: PPUSH
14919: LD_INT 1
14921: PPUSH
14922: LD_INT 5
14924: PPUSH
14925: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 4 ) ;
14929: LD_EXP 54
14933: PPUSH
14934: LD_INT 3
14936: PPUSH
14937: LD_INT 1
14939: PPUSH
14940: LD_INT 1
14942: PPUSH
14943: LD_INT 4
14945: PPUSH
14946: CALL_OW 185
// end ;
14950: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 2 do
14951: LD_INT 22
14953: PUSH
14954: LD_EXP 72
14958: PUSH
14959: EMPTY
14960: LIST
14961: LIST
14962: PUSH
14963: LD_INT 21
14965: PUSH
14966: LD_INT 2
14968: PUSH
14969: EMPTY
14970: LIST
14971: LIST
14972: PUSH
14973: EMPTY
14974: LIST
14975: LIST
14976: PPUSH
14977: CALL_OW 69
14981: PUSH
14982: LD_INT 2
14984: EQUAL
14985: IFFALSE 15054
14987: GO 14989
14989: DISABLE
// begin enable ;
14990: ENABLE
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
14991: LD_EXP 54
14995: PPUSH
14996: LD_INT 3
14998: PPUSH
14999: LD_INT 1
15001: PPUSH
15002: LD_INT 1
15004: PPUSH
15005: LD_INT 5
15007: PPUSH
15008: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
15012: LD_EXP 54
15016: PPUSH
15017: LD_INT 3
15019: PPUSH
15020: LD_INT 1
15022: PPUSH
15023: LD_INT 1
15025: PPUSH
15026: LD_INT 5
15028: PPUSH
15029: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
15033: LD_EXP 54
15037: PPUSH
15038: LD_INT 3
15040: PPUSH
15041: LD_INT 1
15043: PPUSH
15044: LD_INT 1
15046: PPUSH
15047: LD_INT 5
15049: PPUSH
15050: CALL_OW 185
// end ;
15054: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 3 do
15055: LD_INT 22
15057: PUSH
15058: LD_EXP 72
15062: PUSH
15063: EMPTY
15064: LIST
15065: LIST
15066: PUSH
15067: LD_INT 21
15069: PUSH
15070: LD_INT 2
15072: PUSH
15073: EMPTY
15074: LIST
15075: LIST
15076: PUSH
15077: EMPTY
15078: LIST
15079: LIST
15080: PPUSH
15081: CALL_OW 69
15085: PUSH
15086: LD_INT 3
15088: EQUAL
15089: IFFALSE 15137
15091: GO 15093
15093: DISABLE
// begin enable ;
15094: ENABLE
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
15095: LD_EXP 54
15099: PPUSH
15100: LD_INT 3
15102: PPUSH
15103: LD_INT 1
15105: PPUSH
15106: LD_INT 1
15108: PPUSH
15109: LD_INT 5
15111: PPUSH
15112: CALL_OW 185
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
15116: LD_EXP 54
15120: PPUSH
15121: LD_INT 3
15123: PPUSH
15124: LD_INT 1
15126: PPUSH
15127: LD_INT 1
15129: PPUSH
15130: LD_INT 5
15132: PPUSH
15133: CALL_OW 185
// end ;
15137: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 4 do
15138: LD_INT 22
15140: PUSH
15141: LD_EXP 72
15145: PUSH
15146: EMPTY
15147: LIST
15148: LIST
15149: PUSH
15150: LD_INT 21
15152: PUSH
15153: LD_INT 2
15155: PUSH
15156: EMPTY
15157: LIST
15158: LIST
15159: PUSH
15160: EMPTY
15161: LIST
15162: LIST
15163: PPUSH
15164: CALL_OW 69
15168: PUSH
15169: LD_INT 4
15171: EQUAL
15172: IFFALSE 15199
15174: GO 15176
15176: DISABLE
// begin enable ;
15177: ENABLE
// AddComConstruct ( amfab , 3 , 1 , 1 , 5 ) ;
15178: LD_EXP 54
15182: PPUSH
15183: LD_INT 3
15185: PPUSH
15186: LD_INT 1
15188: PPUSH
15189: LD_INT 1
15191: PPUSH
15192: LD_INT 5
15194: PPUSH
15195: CALL_OW 185
// end ;
15199: END
// every 1 1$0 trigger OmicronAI = 1 and FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) >= 5 do var tactic , i ;
15200: LD_EXP 16
15204: PUSH
15205: LD_INT 1
15207: EQUAL
15208: PUSH
15209: LD_INT 22
15211: PUSH
15212: LD_EXP 72
15216: PUSH
15217: EMPTY
15218: LIST
15219: LIST
15220: PUSH
15221: LD_INT 21
15223: PUSH
15224: LD_INT 2
15226: PUSH
15227: EMPTY
15228: LIST
15229: LIST
15230: PUSH
15231: LD_INT 24
15233: PUSH
15234: LD_INT 1000
15236: PUSH
15237: EMPTY
15238: LIST
15239: LIST
15240: PUSH
15241: EMPTY
15242: LIST
15243: LIST
15244: LIST
15245: PPUSH
15246: CALL_OW 69
15250: PUSH
15251: LD_INT 5
15253: GREATEREQUAL
15254: AND
15255: IFFALSE 15515
15257: GO 15259
15259: DISABLE
15260: LD_INT 0
15262: PPUSH
15263: PPUSH
// begin enable ;
15264: ENABLE
// Tactic = Rand ( 1 , 3 ) ;
15265: LD_ADDR_VAR 0 1
15269: PUSH
15270: LD_INT 1
15272: PPUSH
15273: LD_INT 3
15275: PPUSH
15276: CALL_OW 12
15280: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
15281: LD_ADDR_VAR 0 2
15285: PUSH
15286: LD_INT 22
15288: PUSH
15289: LD_EXP 72
15293: PUSH
15294: EMPTY
15295: LIST
15296: LIST
15297: PUSH
15298: LD_INT 21
15300: PUSH
15301: LD_INT 2
15303: PUSH
15304: EMPTY
15305: LIST
15306: LIST
15307: PUSH
15308: LD_INT 24
15310: PUSH
15311: LD_INT 1000
15313: PUSH
15314: EMPTY
15315: LIST
15316: LIST
15317: PUSH
15318: EMPTY
15319: LIST
15320: LIST
15321: LIST
15322: PPUSH
15323: CALL_OW 69
15327: PUSH
15328: FOR_IN
15329: IFFALSE 15513
// begin if Tactic = 1 then
15331: LD_VAR 0 1
15335: PUSH
15336: LD_INT 1
15338: EQUAL
15339: IFFALSE 15386
// begin AddComAgressiveMove ( i , 100 , 67 ) ;
15341: LD_VAR 0 2
15345: PPUSH
15346: LD_INT 100
15348: PPUSH
15349: LD_INT 67
15351: PPUSH
15352: CALL_OW 174
// AddComAgressiveMove ( i , 147 , 81 ) ;
15356: LD_VAR 0 2
15360: PPUSH
15361: LD_INT 147
15363: PPUSH
15364: LD_INT 81
15366: PPUSH
15367: CALL_OW 174
// AddComAgressiveMove ( i , 140 , 12 ) ;
15371: LD_VAR 0 2
15375: PPUSH
15376: LD_INT 140
15378: PPUSH
15379: LD_INT 12
15381: PPUSH
15382: CALL_OW 174
// end ; if Tactic = 2 then
15386: LD_VAR 0 1
15390: PUSH
15391: LD_INT 2
15393: EQUAL
15394: IFFALSE 15441
// begin AddComAgressiveMove ( i , 140 , 12 ) ;
15396: LD_VAR 0 2
15400: PPUSH
15401: LD_INT 140
15403: PPUSH
15404: LD_INT 12
15406: PPUSH
15407: CALL_OW 174
// AddComAgressiveMove ( i , 147 , 81 ) ;
15411: LD_VAR 0 2
15415: PPUSH
15416: LD_INT 147
15418: PPUSH
15419: LD_INT 81
15421: PPUSH
15422: CALL_OW 174
// AddComAgressiveMove ( i , 100 , 67 ) ;
15426: LD_VAR 0 2
15430: PPUSH
15431: LD_INT 100
15433: PPUSH
15434: LD_INT 67
15436: PPUSH
15437: CALL_OW 174
// end ; if Tactic = 3 then
15441: LD_VAR 0 1
15445: PUSH
15446: LD_INT 3
15448: EQUAL
15449: IFFALSE 15511
// begin AddComAgressiveMove ( i , 56 , 69 ) ;
15451: LD_VAR 0 2
15455: PPUSH
15456: LD_INT 56
15458: PPUSH
15459: LD_INT 69
15461: PPUSH
15462: CALL_OW 174
// AddComAgressiveMove ( i , 100 , 67 ) ;
15466: LD_VAR 0 2
15470: PPUSH
15471: LD_INT 100
15473: PPUSH
15474: LD_INT 67
15476: PPUSH
15477: CALL_OW 174
// AddComAgressiveMove ( i , 147 , 81 ) ;
15481: LD_VAR 0 2
15485: PPUSH
15486: LD_INT 147
15488: PPUSH
15489: LD_INT 81
15491: PPUSH
15492: CALL_OW 174
// AddComAgressiveMove ( i , 140 , 12 ) ;
15496: LD_VAR 0 2
15500: PPUSH
15501: LD_INT 140
15503: PPUSH
15504: LD_INT 12
15506: PPUSH
15507: CALL_OW 174
// end ; end ;
15511: GO 15328
15513: POP
15514: POP
// end ; end_of_file
15515: PPOPN 2
15517: END
// every 0 0$3 trigger ArabianAI = 1 do
15518: LD_EXP 17
15522: PUSH
15523: LD_INT 1
15525: EQUAL
15526: IFFALSE 15543
15528: GO 15530
15530: DISABLE
// begin wait ( 0 0$1 ) ;
15531: LD_INT 35
15533: PPUSH
15534: CALL_OW 67
// enable ;
15538: ENABLE
// RepairBuildingArabian ;
15539: CALL 15544 0 0
// end ;
15543: END
// export DestroyRepairAR ; export function RepairBuildingArabian ; var enginer_list , scientist_list , buildings , i , un ; begin
15544: LD_INT 0
15546: PPUSH
15547: PPUSH
15548: PPUSH
15549: PPUSH
15550: PPUSH
15551: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_class , 2 ] ] ) ;
15552: LD_ADDR_VAR 0 2
15556: PUSH
15557: LD_INT 22
15559: PUSH
15560: LD_EXP 73
15564: PUSH
15565: EMPTY
15566: LIST
15567: LIST
15568: PUSH
15569: LD_INT 25
15571: PUSH
15572: LD_INT 2
15574: PUSH
15575: EMPTY
15576: LIST
15577: LIST
15578: PUSH
15579: EMPTY
15580: LIST
15581: LIST
15582: PPUSH
15583: CALL_OW 69
15587: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_class , 4 ] ] ) ;
15588: LD_ADDR_VAR 0 3
15592: PUSH
15593: LD_INT 22
15595: PUSH
15596: LD_EXP 73
15600: PUSH
15601: EMPTY
15602: LIST
15603: LIST
15604: PUSH
15605: LD_INT 25
15607: PUSH
15608: LD_INT 4
15610: PUSH
15611: EMPTY
15612: LIST
15613: LIST
15614: PUSH
15615: EMPTY
15616: LIST
15617: LIST
15618: PPUSH
15619: CALL_OW 69
15623: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu2 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
15624: LD_ADDR_VAR 0 4
15628: PUSH
15629: LD_INT 22
15631: PUSH
15632: LD_EXP 73
15636: PUSH
15637: EMPTY
15638: LIST
15639: LIST
15640: PUSH
15641: LD_INT 21
15643: PUSH
15644: LD_INT 3
15646: PUSH
15647: EMPTY
15648: LIST
15649: LIST
15650: PUSH
15651: LD_INT 3
15653: PUSH
15654: LD_INT 24
15656: PUSH
15657: LD_INT 1000
15659: PUSH
15660: EMPTY
15661: LIST
15662: LIST
15663: PUSH
15664: EMPTY
15665: LIST
15666: LIST
15667: PUSH
15668: EMPTY
15669: LIST
15670: LIST
15671: LIST
15672: PUSH
15673: EMPTY
15674: LIST
15675: PPUSH
15676: CALL_OW 69
15680: ST_TO_ADDR
// DestroyRepairAR = 0 ;
15681: LD_ADDR_EXP 78
15685: PUSH
15686: LD_INT 0
15688: ST_TO_ADDR
// if buildings > 0 then
15689: LD_VAR 0 4
15693: PUSH
15694: LD_INT 0
15696: GREATER
15697: IFFALSE 15832
// begin for i = 1 to enginer_list do
15699: LD_ADDR_VAR 0 5
15703: PUSH
15704: DOUBLE
15705: LD_INT 1
15707: DEC
15708: ST_TO_ADDR
15709: LD_VAR 0 2
15713: PUSH
15714: FOR_TO
15715: IFFALSE 15830
// begin ComExitBuilding ( enginer_list [ i ] ) ;
15717: LD_VAR 0 2
15721: PUSH
15722: LD_VAR 0 5
15726: ARRAY
15727: PPUSH
15728: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
15732: LD_VAR 0 2
15736: PUSH
15737: LD_VAR 0 5
15741: ARRAY
15742: PPUSH
15743: LD_VAR 0 4
15747: PUSH
15748: LD_INT 1
15750: ARRAY
15751: PPUSH
15752: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
15756: LD_VAR 0 2
15760: PUSH
15761: LD_VAR 0 5
15765: ARRAY
15766: PPUSH
15767: CALL_OW 256
15771: PUSH
15772: LD_INT 800
15774: LESS
15775: IFFALSE 15810
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
15777: LD_VAR 0 3
15781: PUSH
15782: LD_INT 1
15784: ARRAY
15785: PPUSH
15786: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , AmHealZone ) ;
15790: LD_VAR 0 2
15794: PUSH
15795: LD_VAR 0 5
15799: ARRAY
15800: PPUSH
15801: LD_INT 7
15803: PPUSH
15804: CALL_OW 113
// end else
15808: GO 15828
// ComEnterUnit ( scientist_list [ 1 ] , arlab ) ;
15810: LD_VAR 0 3
15814: PUSH
15815: LD_INT 1
15817: ARRAY
15818: PPUSH
15819: LD_EXP 58
15823: PPUSH
15824: CALL_OW 120
// end ;
15828: GO 15714
15830: POP
15831: POP
// end ; for i = 1 to enginer_list do
15832: LD_ADDR_VAR 0 5
15836: PUSH
15837: DOUBLE
15838: LD_INT 1
15840: DEC
15841: ST_TO_ADDR
15842: LD_VAR 0 2
15846: PUSH
15847: FOR_TO
15848: IFFALSE 16009
// begin wait ( 0 0$3 ) ;
15850: LD_INT 105
15852: PPUSH
15853: CALL_OW 67
// if buildings = 0 and DestroyRepairAR = 0 then
15857: LD_VAR 0 4
15861: PUSH
15862: LD_INT 0
15864: EQUAL
15865: PUSH
15866: LD_EXP 78
15870: PUSH
15871: LD_INT 0
15873: EQUAL
15874: AND
15875: IFFALSE 15899
// begin ComEnterUnit ( enginer_list [ i ] , ardepo ) ;
15877: LD_VAR 0 2
15881: PUSH
15882: LD_VAR 0 5
15886: ARRAY
15887: PPUSH
15888: LD_EXP 57
15892: PPUSH
15893: CALL_OW 120
// end else
15897: GO 15914
// begin ComExitBuilding ( enginer_list [ i ] ) ;
15899: LD_VAR 0 2
15903: PUSH
15904: LD_VAR 0 5
15908: ARRAY
15909: PPUSH
15910: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
15914: LD_VAR 0 2
15918: PUSH
15919: LD_VAR 0 5
15923: ARRAY
15924: PPUSH
15925: CALL_OW 256
15929: PUSH
15930: LD_INT 1000
15932: LESS
15933: IFFALSE 15968
// begin ComMoveToArea ( enginer_List [ i ] , ArHealZone ) ;
15935: LD_VAR 0 2
15939: PUSH
15940: LD_VAR 0 5
15944: ARRAY
15945: PPUSH
15946: LD_INT 8
15948: PPUSH
15949: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
15953: LD_VAR 0 3
15957: PUSH
15958: LD_INT 1
15960: ARRAY
15961: PPUSH
15962: CALL_OW 122
// end else
15966: GO 16007
// if GetLives ( enginer_list [ i ] ) = 1000 then
15968: LD_VAR 0 2
15972: PUSH
15973: LD_VAR 0 5
15977: ARRAY
15978: PPUSH
15979: CALL_OW 256
15983: PUSH
15984: LD_INT 1000
15986: EQUAL
15987: IFFALSE 16007
// begin ComEnterUnit ( scientist_list [ 1 ] , arlab ) ;
15989: LD_VAR 0 3
15993: PUSH
15994: LD_INT 1
15996: ARRAY
15997: PPUSH
15998: LD_EXP 58
16002: PPUSH
16003: CALL_OW 120
// end ; end ;
16007: GO 15847
16009: POP
16010: POP
// end ;
16011: LD_VAR 0 1
16015: RET
// every 0 0$3 trigger ArabianAI = 1 do var i , l ;
16016: LD_EXP 17
16020: PUSH
16021: LD_INT 1
16023: EQUAL
16024: IFFALSE 16101
16026: GO 16028
16028: DISABLE
16029: LD_INT 0
16031: PPUSH
16032: PPUSH
// begin enable ;
16033: ENABLE
// for i in FilterUnitsInArea ( ArabianBase , [ [ f_class , 1 ] , [ f_side , cpu2 ] ] ) do
16034: LD_ADDR_VAR 0 1
16038: PUSH
16039: LD_INT 5
16041: PPUSH
16042: LD_INT 25
16044: PUSH
16045: LD_INT 1
16047: PUSH
16048: EMPTY
16049: LIST
16050: LIST
16051: PUSH
16052: LD_INT 22
16054: PUSH
16055: LD_EXP 73
16059: PUSH
16060: EMPTY
16061: LIST
16062: LIST
16063: PUSH
16064: EMPTY
16065: LIST
16066: LIST
16067: PPUSH
16068: CALL_OW 70
16072: PUSH
16073: FOR_IN
16074: IFFALSE 16099
// begin wait ( 0 0$1 ) ;
16076: LD_INT 35
16078: PPUSH
16079: CALL_OW 67
// ComEnterUnit ( i , ararmoury ) ;
16083: LD_VAR 0 1
16087: PPUSH
16088: LD_EXP 60
16092: PPUSH
16093: CALL_OW 120
// end ;
16097: GO 16073
16099: POP
16100: POP
// end ;
16101: PPOPN 2
16103: END
// export function ArabianBuildVehicle ; begin
16104: LD_INT 0
16106: PPUSH
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16107: LD_EXP 59
16111: PPUSH
16112: LD_INT 14
16114: PPUSH
16115: LD_INT 1
16117: PPUSH
16118: LD_INT 1
16120: PPUSH
16121: LD_INT 27
16123: PPUSH
16124: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16128: LD_EXP 59
16132: PPUSH
16133: LD_INT 14
16135: PPUSH
16136: LD_INT 1
16138: PPUSH
16139: LD_INT 1
16141: PPUSH
16142: LD_INT 27
16144: PPUSH
16145: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16149: LD_EXP 59
16153: PPUSH
16154: LD_INT 14
16156: PPUSH
16157: LD_INT 1
16159: PPUSH
16160: LD_INT 1
16162: PPUSH
16163: LD_INT 27
16165: PPUSH
16166: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 26 ) ;
16170: LD_EXP 59
16174: PPUSH
16175: LD_INT 14
16177: PPUSH
16178: LD_INT 1
16180: PPUSH
16181: LD_INT 1
16183: PPUSH
16184: LD_INT 26
16186: PPUSH
16187: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 25 ) ;
16191: LD_EXP 59
16195: PPUSH
16196: LD_INT 14
16198: PPUSH
16199: LD_INT 1
16201: PPUSH
16202: LD_INT 1
16204: PPUSH
16205: LD_INT 25
16207: PPUSH
16208: CALL_OW 185
// end ;
16212: LD_VAR 0 1
16216: RET
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_type , unit_vehicle ] ] ) = 0 do
16217: LD_INT 22
16219: PUSH
16220: LD_EXP 73
16224: PUSH
16225: EMPTY
16226: LIST
16227: LIST
16228: PUSH
16229: LD_INT 21
16231: PUSH
16232: LD_INT 2
16234: PUSH
16235: EMPTY
16236: LIST
16237: LIST
16238: PUSH
16239: EMPTY
16240: LIST
16241: LIST
16242: PPUSH
16243: CALL_OW 69
16247: PUSH
16248: LD_INT 0
16250: EQUAL
16251: IFFALSE 16362
16253: GO 16255
16255: DISABLE
// begin enable ;
16256: ENABLE
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16257: LD_EXP 59
16261: PPUSH
16262: LD_INT 14
16264: PPUSH
16265: LD_INT 1
16267: PPUSH
16268: LD_INT 1
16270: PPUSH
16271: LD_INT 27
16273: PPUSH
16274: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16278: LD_EXP 59
16282: PPUSH
16283: LD_INT 14
16285: PPUSH
16286: LD_INT 1
16288: PPUSH
16289: LD_INT 1
16291: PPUSH
16292: LD_INT 27
16294: PPUSH
16295: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16299: LD_EXP 59
16303: PPUSH
16304: LD_INT 14
16306: PPUSH
16307: LD_INT 1
16309: PPUSH
16310: LD_INT 1
16312: PPUSH
16313: LD_INT 27
16315: PPUSH
16316: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 26 ) ;
16320: LD_EXP 59
16324: PPUSH
16325: LD_INT 14
16327: PPUSH
16328: LD_INT 1
16330: PPUSH
16331: LD_INT 1
16333: PPUSH
16334: LD_INT 26
16336: PPUSH
16337: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 25 ) ;
16341: LD_EXP 59
16345: PPUSH
16346: LD_INT 14
16348: PPUSH
16349: LD_INT 1
16351: PPUSH
16352: LD_INT 1
16354: PPUSH
16355: LD_INT 25
16357: PPUSH
16358: CALL_OW 185
// end ;
16362: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_type , unit_vehicle ] ] ) = 1 do
16363: LD_INT 22
16365: PUSH
16366: LD_EXP 73
16370: PUSH
16371: EMPTY
16372: LIST
16373: LIST
16374: PUSH
16375: LD_INT 21
16377: PUSH
16378: LD_INT 2
16380: PUSH
16381: EMPTY
16382: LIST
16383: LIST
16384: PUSH
16385: EMPTY
16386: LIST
16387: LIST
16388: PPUSH
16389: CALL_OW 69
16393: PUSH
16394: LD_INT 1
16396: EQUAL
16397: IFFALSE 16487
16399: GO 16401
16401: DISABLE
// begin enable ;
16402: ENABLE
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16403: LD_EXP 59
16407: PPUSH
16408: LD_INT 14
16410: PPUSH
16411: LD_INT 1
16413: PPUSH
16414: LD_INT 1
16416: PPUSH
16417: LD_INT 27
16419: PPUSH
16420: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16424: LD_EXP 59
16428: PPUSH
16429: LD_INT 14
16431: PPUSH
16432: LD_INT 1
16434: PPUSH
16435: LD_INT 1
16437: PPUSH
16438: LD_INT 27
16440: PPUSH
16441: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16445: LD_EXP 59
16449: PPUSH
16450: LD_INT 14
16452: PPUSH
16453: LD_INT 1
16455: PPUSH
16456: LD_INT 1
16458: PPUSH
16459: LD_INT 27
16461: PPUSH
16462: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 26 ) ;
16466: LD_EXP 59
16470: PPUSH
16471: LD_INT 14
16473: PPUSH
16474: LD_INT 1
16476: PPUSH
16477: LD_INT 1
16479: PPUSH
16480: LD_INT 26
16482: PPUSH
16483: CALL_OW 185
// end ;
16487: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_type , unit_vehicle ] ] ) = 2 do
16488: LD_INT 22
16490: PUSH
16491: LD_EXP 73
16495: PUSH
16496: EMPTY
16497: LIST
16498: LIST
16499: PUSH
16500: LD_INT 21
16502: PUSH
16503: LD_INT 2
16505: PUSH
16506: EMPTY
16507: LIST
16508: LIST
16509: PUSH
16510: EMPTY
16511: LIST
16512: LIST
16513: PPUSH
16514: CALL_OW 69
16518: PUSH
16519: LD_INT 2
16521: EQUAL
16522: IFFALSE 16591
16524: GO 16526
16526: DISABLE
// begin enable ;
16527: ENABLE
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16528: LD_EXP 59
16532: PPUSH
16533: LD_INT 14
16535: PPUSH
16536: LD_INT 1
16538: PPUSH
16539: LD_INT 1
16541: PPUSH
16542: LD_INT 27
16544: PPUSH
16545: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16549: LD_EXP 59
16553: PPUSH
16554: LD_INT 14
16556: PPUSH
16557: LD_INT 1
16559: PPUSH
16560: LD_INT 1
16562: PPUSH
16563: LD_INT 27
16565: PPUSH
16566: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16570: LD_EXP 59
16574: PPUSH
16575: LD_INT 14
16577: PPUSH
16578: LD_INT 1
16580: PPUSH
16581: LD_INT 1
16583: PPUSH
16584: LD_INT 27
16586: PPUSH
16587: CALL_OW 185
// end ;
16591: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_type , unit_vehicle ] ] ) = 3 do
16592: LD_INT 22
16594: PUSH
16595: LD_EXP 73
16599: PUSH
16600: EMPTY
16601: LIST
16602: LIST
16603: PUSH
16604: LD_INT 21
16606: PUSH
16607: LD_INT 2
16609: PUSH
16610: EMPTY
16611: LIST
16612: LIST
16613: PUSH
16614: EMPTY
16615: LIST
16616: LIST
16617: PPUSH
16618: CALL_OW 69
16622: PUSH
16623: LD_INT 3
16625: EQUAL
16626: IFFALSE 16674
16628: GO 16630
16630: DISABLE
// begin enable ;
16631: ENABLE
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16632: LD_EXP 59
16636: PPUSH
16637: LD_INT 14
16639: PPUSH
16640: LD_INT 1
16642: PPUSH
16643: LD_INT 1
16645: PPUSH
16646: LD_INT 27
16648: PPUSH
16649: CALL_OW 185
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16653: LD_EXP 59
16657: PPUSH
16658: LD_INT 14
16660: PPUSH
16661: LD_INT 1
16663: PPUSH
16664: LD_INT 1
16666: PPUSH
16667: LD_INT 27
16669: PPUSH
16670: CALL_OW 185
// end ;
16674: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_type , unit_vehicle ] ] ) = 4 do
16675: LD_INT 22
16677: PUSH
16678: LD_EXP 73
16682: PUSH
16683: EMPTY
16684: LIST
16685: LIST
16686: PUSH
16687: LD_INT 21
16689: PUSH
16690: LD_INT 2
16692: PUSH
16693: EMPTY
16694: LIST
16695: LIST
16696: PUSH
16697: EMPTY
16698: LIST
16699: LIST
16700: PPUSH
16701: CALL_OW 69
16705: PUSH
16706: LD_INT 4
16708: EQUAL
16709: IFFALSE 16736
16711: GO 16713
16713: DISABLE
// begin enable ;
16714: ENABLE
// AddComConstruct ( arfab , 14 , 1 , 1 , 27 ) ;
16715: LD_EXP 59
16719: PPUSH
16720: LD_INT 14
16722: PPUSH
16723: LD_INT 1
16725: PPUSH
16726: LD_INT 1
16728: PPUSH
16729: LD_INT 27
16731: PPUSH
16732: CALL_OW 185
// end ;
16736: END
// every 1 1$0 trigger ArabianAI = 1 and FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) >= 5 do var tactic , i ;
16737: LD_EXP 17
16741: PUSH
16742: LD_INT 1
16744: EQUAL
16745: PUSH
16746: LD_INT 22
16748: PUSH
16749: LD_EXP 73
16753: PUSH
16754: EMPTY
16755: LIST
16756: LIST
16757: PUSH
16758: LD_INT 21
16760: PUSH
16761: LD_INT 2
16763: PUSH
16764: EMPTY
16765: LIST
16766: LIST
16767: PUSH
16768: LD_INT 24
16770: PUSH
16771: LD_INT 1000
16773: PUSH
16774: EMPTY
16775: LIST
16776: LIST
16777: PUSH
16778: EMPTY
16779: LIST
16780: LIST
16781: LIST
16782: PPUSH
16783: CALL_OW 69
16787: PUSH
16788: LD_INT 5
16790: GREATEREQUAL
16791: AND
16792: IFFALSE 17037
16794: GO 16796
16796: DISABLE
16797: LD_INT 0
16799: PPUSH
16800: PPUSH
// begin enable ;
16801: ENABLE
// Tactic = Rand ( 1 , 3 ) ;
16802: LD_ADDR_VAR 0 1
16806: PUSH
16807: LD_INT 1
16809: PPUSH
16810: LD_INT 3
16812: PPUSH
16813: CALL_OW 12
16817: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
16818: LD_ADDR_VAR 0 2
16822: PUSH
16823: LD_INT 22
16825: PUSH
16826: LD_EXP 73
16830: PUSH
16831: EMPTY
16832: LIST
16833: LIST
16834: PUSH
16835: LD_INT 21
16837: PUSH
16838: LD_INT 2
16840: PUSH
16841: EMPTY
16842: LIST
16843: LIST
16844: PUSH
16845: LD_INT 24
16847: PUSH
16848: LD_INT 1000
16850: PUSH
16851: EMPTY
16852: LIST
16853: LIST
16854: PUSH
16855: EMPTY
16856: LIST
16857: LIST
16858: LIST
16859: PPUSH
16860: CALL_OW 69
16864: PUSH
16865: FOR_IN
16866: IFFALSE 17035
// begin if Tactic = 1 then
16868: LD_VAR 0 1
16872: PUSH
16873: LD_INT 1
16875: EQUAL
16876: IFFALSE 16923
// begin AddComAgressiveMove ( i , 147 , 81 ) ;
16878: LD_VAR 0 2
16882: PPUSH
16883: LD_INT 147
16885: PPUSH
16886: LD_INT 81
16888: PPUSH
16889: CALL_OW 174
// AddComAgressiveMove ( i , 100 , 67 ) ;
16893: LD_VAR 0 2
16897: PPUSH
16898: LD_INT 100
16900: PPUSH
16901: LD_INT 67
16903: PPUSH
16904: CALL_OW 174
// AddComAgressiveMove ( i , 19 , 11 ) ;
16908: LD_VAR 0 2
16912: PPUSH
16913: LD_INT 19
16915: PPUSH
16916: LD_INT 11
16918: PPUSH
16919: CALL_OW 174
// end ; if Tactic = 2 then
16923: LD_VAR 0 1
16927: PUSH
16928: LD_INT 2
16930: EQUAL
16931: IFFALSE 16978
// begin AddComAgressiveMove ( i , 100 , 67 ) ;
16933: LD_VAR 0 2
16937: PPUSH
16938: LD_INT 100
16940: PPUSH
16941: LD_INT 67
16943: PPUSH
16944: CALL_OW 174
// AddComAgressiveMove ( i , 147 , 81 ) ;
16948: LD_VAR 0 2
16952: PPUSH
16953: LD_INT 147
16955: PPUSH
16956: LD_INT 81
16958: PPUSH
16959: CALL_OW 174
// AddComAgressiveMove ( i , 19 , 11 ) ;
16963: LD_VAR 0 2
16967: PPUSH
16968: LD_INT 19
16970: PPUSH
16971: LD_INT 11
16973: PPUSH
16974: CALL_OW 174
// end ; if Tactic = 3 then
16978: LD_VAR 0 1
16982: PUSH
16983: LD_INT 3
16985: EQUAL
16986: IFFALSE 17033
// begin AddComAgressiveMove ( i , 19 , 11 ) ;
16988: LD_VAR 0 2
16992: PPUSH
16993: LD_INT 19
16995: PPUSH
16996: LD_INT 11
16998: PPUSH
16999: CALL_OW 174
// AddComAgressiveMove ( i , 100 , 81 ) ;
17003: LD_VAR 0 2
17007: PPUSH
17008: LD_INT 100
17010: PPUSH
17011: LD_INT 81
17013: PPUSH
17014: CALL_OW 174
// AddComAgressiveMove ( i , 147 , 81 ) ;
17018: LD_VAR 0 2
17022: PPUSH
17023: LD_INT 147
17025: PPUSH
17026: LD_INT 81
17028: PPUSH
17029: CALL_OW 174
// end ; end ;
17033: GO 16865
17035: POP
17036: POP
// end ; end_of_file
17037: PPOPN 2
17039: END
// every 0 0$3 trigger BeriaAI = 1 do
17040: LD_EXP 18
17044: PUSH
17045: LD_INT 1
17047: EQUAL
17048: IFFALSE 17065
17050: GO 17052
17052: DISABLE
// begin wait ( 0 0$1 ) ;
17053: LD_INT 35
17055: PPUSH
17056: CALL_OW 67
// enable ;
17060: ENABLE
// RepairBuildingRussian1 ;
17061: CALL 17092 0 0
// end ;
17065: END
// every 0 0$3 trigger KirovAI = 1 do
17066: LD_EXP 19
17070: PUSH
17071: LD_INT 1
17073: EQUAL
17074: IFFALSE 17091
17076: GO 17078
17078: DISABLE
// begin wait ( 0 0$1 ) ;
17079: LD_INT 35
17081: PPUSH
17082: CALL_OW 67
// enable ;
17086: ENABLE
// RepairBuildingRussian2 ;
17087: CALL 18016 0 0
// end ;
17091: END
// export DestroyRepairRU1 ; export function RepairBuildingRussian1 ; var enginer_list , scientist_list , buildings , i , un ; begin
17092: LD_INT 0
17094: PPUSH
17095: PPUSH
17096: PPUSH
17097: PPUSH
17098: PPUSH
17099: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_class , 2 ] ] ) ;
17100: LD_ADDR_VAR 0 2
17104: PUSH
17105: LD_INT 22
17107: PUSH
17108: LD_EXP 74
17112: PUSH
17113: EMPTY
17114: LIST
17115: LIST
17116: PUSH
17117: LD_INT 25
17119: PUSH
17120: LD_INT 2
17122: PUSH
17123: EMPTY
17124: LIST
17125: LIST
17126: PUSH
17127: EMPTY
17128: LIST
17129: LIST
17130: PPUSH
17131: CALL_OW 69
17135: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_class , 4 ] ] ) ;
17136: LD_ADDR_VAR 0 3
17140: PUSH
17141: LD_INT 22
17143: PUSH
17144: LD_EXP 74
17148: PUSH
17149: EMPTY
17150: LIST
17151: LIST
17152: PUSH
17153: LD_INT 25
17155: PUSH
17156: LD_INT 4
17158: PUSH
17159: EMPTY
17160: LIST
17161: LIST
17162: PUSH
17163: EMPTY
17164: LIST
17165: LIST
17166: PPUSH
17167: CALL_OW 69
17171: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu3 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
17172: LD_ADDR_VAR 0 4
17176: PUSH
17177: LD_INT 22
17179: PUSH
17180: LD_EXP 74
17184: PUSH
17185: EMPTY
17186: LIST
17187: LIST
17188: PUSH
17189: LD_INT 21
17191: PUSH
17192: LD_INT 3
17194: PUSH
17195: EMPTY
17196: LIST
17197: LIST
17198: PUSH
17199: LD_INT 3
17201: PUSH
17202: LD_INT 24
17204: PUSH
17205: LD_INT 1000
17207: PUSH
17208: EMPTY
17209: LIST
17210: LIST
17211: PUSH
17212: EMPTY
17213: LIST
17214: LIST
17215: PUSH
17216: EMPTY
17217: LIST
17218: LIST
17219: LIST
17220: PUSH
17221: EMPTY
17222: LIST
17223: PPUSH
17224: CALL_OW 69
17228: ST_TO_ADDR
// DestroyRepairRU1 = 0 ;
17229: LD_ADDR_EXP 79
17233: PUSH
17234: LD_INT 0
17236: ST_TO_ADDR
// if buildings > 0 then
17237: LD_VAR 0 4
17241: PUSH
17242: LD_INT 0
17244: GREATER
17245: IFFALSE 17380
// begin for i = 1 to enginer_list do
17247: LD_ADDR_VAR 0 5
17251: PUSH
17252: DOUBLE
17253: LD_INT 1
17255: DEC
17256: ST_TO_ADDR
17257: LD_VAR 0 2
17261: PUSH
17262: FOR_TO
17263: IFFALSE 17378
// begin ComExitBuilding ( enginer_list [ i ] ) ;
17265: LD_VAR 0 2
17269: PUSH
17270: LD_VAR 0 5
17274: ARRAY
17275: PPUSH
17276: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
17280: LD_VAR 0 2
17284: PUSH
17285: LD_VAR 0 5
17289: ARRAY
17290: PPUSH
17291: LD_VAR 0 4
17295: PUSH
17296: LD_INT 1
17298: ARRAY
17299: PPUSH
17300: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
17304: LD_VAR 0 2
17308: PUSH
17309: LD_VAR 0 5
17313: ARRAY
17314: PPUSH
17315: CALL_OW 256
17319: PUSH
17320: LD_INT 800
17322: LESS
17323: IFFALSE 17358
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
17325: LD_VAR 0 3
17329: PUSH
17330: LD_INT 1
17332: ARRAY
17333: PPUSH
17334: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , Ru1HealZone ) ;
17338: LD_VAR 0 2
17342: PUSH
17343: LD_VAR 0 5
17347: ARRAY
17348: PPUSH
17349: LD_INT 13
17351: PPUSH
17352: CALL_OW 113
// end else
17356: GO 17376
// ComEnterUnit ( scientist_list [ 1 ] , ru1lab ) ;
17358: LD_VAR 0 3
17362: PUSH
17363: LD_INT 1
17365: ARRAY
17366: PPUSH
17367: LD_EXP 62
17371: PPUSH
17372: CALL_OW 120
// end ;
17376: GO 17262
17378: POP
17379: POP
// end ; for i = 1 to enginer_list do
17380: LD_ADDR_VAR 0 5
17384: PUSH
17385: DOUBLE
17386: LD_INT 1
17388: DEC
17389: ST_TO_ADDR
17390: LD_VAR 0 2
17394: PUSH
17395: FOR_TO
17396: IFFALSE 17557
// begin wait ( 0 0$3 ) ;
17398: LD_INT 105
17400: PPUSH
17401: CALL_OW 67
// if buildings = 0 and DestroyRepairAM = 0 then
17405: LD_VAR 0 4
17409: PUSH
17410: LD_INT 0
17412: EQUAL
17413: PUSH
17414: LD_EXP 77
17418: PUSH
17419: LD_INT 0
17421: EQUAL
17422: AND
17423: IFFALSE 17447
// begin ComEnterUnit ( enginer_list [ i ] , ru1depo ) ;
17425: LD_VAR 0 2
17429: PUSH
17430: LD_VAR 0 5
17434: ARRAY
17435: PPUSH
17436: LD_EXP 61
17440: PPUSH
17441: CALL_OW 120
// end else
17445: GO 17462
// begin ComExitBuilding ( enginer_list [ i ] ) ;
17447: LD_VAR 0 2
17451: PUSH
17452: LD_VAR 0 5
17456: ARRAY
17457: PPUSH
17458: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
17462: LD_VAR 0 2
17466: PUSH
17467: LD_VAR 0 5
17471: ARRAY
17472: PPUSH
17473: CALL_OW 256
17477: PUSH
17478: LD_INT 1000
17480: LESS
17481: IFFALSE 17516
// begin ComMoveToArea ( enginer_List [ i ] , Ru1HealZone ) ;
17483: LD_VAR 0 2
17487: PUSH
17488: LD_VAR 0 5
17492: ARRAY
17493: PPUSH
17494: LD_INT 13
17496: PPUSH
17497: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
17501: LD_VAR 0 3
17505: PUSH
17506: LD_INT 1
17508: ARRAY
17509: PPUSH
17510: CALL_OW 122
// end else
17514: GO 17555
// if GetLives ( enginer_list [ i ] ) = 1000 then
17516: LD_VAR 0 2
17520: PUSH
17521: LD_VAR 0 5
17525: ARRAY
17526: PPUSH
17527: CALL_OW 256
17531: PUSH
17532: LD_INT 1000
17534: EQUAL
17535: IFFALSE 17555
// begin ComEnterUnit ( scientist_list [ 1 ] , ru1lab ) ;
17537: LD_VAR 0 3
17541: PUSH
17542: LD_INT 1
17544: ARRAY
17545: PPUSH
17546: LD_EXP 62
17550: PPUSH
17551: CALL_OW 120
// end ; end ;
17555: GO 17395
17557: POP
17558: POP
// end ;
17559: LD_VAR 0 1
17563: RET
// every 0 0$3 trigger BeriaAI = 1 do var i , l ;
17564: LD_EXP 18
17568: PUSH
17569: LD_INT 1
17571: EQUAL
17572: IFFALSE 17649
17574: GO 17576
17576: DISABLE
17577: LD_INT 0
17579: PPUSH
17580: PPUSH
// begin enable ;
17581: ENABLE
// for i in FilterUnitsInArea ( BeriaBase , [ [ f_class , 1 ] , [ f_side , cpu3 ] ] ) do
17582: LD_ADDR_VAR 0 1
17586: PUSH
17587: LD_INT 15
17589: PPUSH
17590: LD_INT 25
17592: PUSH
17593: LD_INT 1
17595: PUSH
17596: EMPTY
17597: LIST
17598: LIST
17599: PUSH
17600: LD_INT 22
17602: PUSH
17603: LD_EXP 74
17607: PUSH
17608: EMPTY
17609: LIST
17610: LIST
17611: PUSH
17612: EMPTY
17613: LIST
17614: LIST
17615: PPUSH
17616: CALL_OW 70
17620: PUSH
17621: FOR_IN
17622: IFFALSE 17647
// begin wait ( 0 0$1 ) ;
17624: LD_INT 35
17626: PPUSH
17627: CALL_OW 67
// ComEnterUnit ( i , ru1armoury ) ;
17631: LD_VAR 0 1
17635: PPUSH
17636: LD_EXP 64
17640: PPUSH
17641: CALL_OW 120
// end ;
17645: GO 17621
17647: POP
17648: POP
// end ;
17649: PPOPN 2
17651: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_type , unit_vehicle ] ] ) = 0 do
17652: LD_INT 22
17654: PUSH
17655: LD_EXP 74
17659: PUSH
17660: EMPTY
17661: LIST
17662: LIST
17663: PUSH
17664: LD_INT 21
17666: PUSH
17667: LD_INT 2
17669: PUSH
17670: EMPTY
17671: LIST
17672: LIST
17673: PUSH
17674: EMPTY
17675: LIST
17676: LIST
17677: PPUSH
17678: CALL_OW 69
17682: PUSH
17683: LD_INT 0
17685: EQUAL
17686: IFFALSE 17797
17688: GO 17690
17690: DISABLE
// begin enable ;
17691: ENABLE
// AddComConstruct ( ru1fab , 22 , 1 , 1 , 44 ) ;
17692: LD_EXP 63
17696: PPUSH
17697: LD_INT 22
17699: PPUSH
17700: LD_INT 1
17702: PPUSH
17703: LD_INT 1
17705: PPUSH
17706: LD_INT 44
17708: PPUSH
17709: CALL_OW 185
// AddComConstruct ( ru1fab , 22 , 1 , 1 , 44 ) ;
17713: LD_EXP 63
17717: PPUSH
17718: LD_INT 22
17720: PPUSH
17721: LD_INT 1
17723: PPUSH
17724: LD_INT 1
17726: PPUSH
17727: LD_INT 44
17729: PPUSH
17730: CALL_OW 185
// AddComConstruct ( ru1fab , 22 , 1 , 1 , 44 ) ;
17734: LD_EXP 63
17738: PPUSH
17739: LD_INT 22
17741: PPUSH
17742: LD_INT 1
17744: PPUSH
17745: LD_INT 1
17747: PPUSH
17748: LD_INT 44
17750: PPUSH
17751: CALL_OW 185
// AddComConstruct ( ru1fab , 22 , 1 , 1 , 43 ) ;
17755: LD_EXP 63
17759: PPUSH
17760: LD_INT 22
17762: PPUSH
17763: LD_INT 1
17765: PPUSH
17766: LD_INT 1
17768: PPUSH
17769: LD_INT 43
17771: PPUSH
17772: CALL_OW 185
// AddComConstruct ( ru1fab , 22 , 1 , 1 , 43 ) ;
17776: LD_EXP 63
17780: PPUSH
17781: LD_INT 22
17783: PPUSH
17784: LD_INT 1
17786: PPUSH
17787: LD_INT 1
17789: PPUSH
17790: LD_INT 43
17792: PPUSH
17793: CALL_OW 185
// end ;
17797: END
// every 1 1$0 trigger BeriaAI = 1 and FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) >= 5 do var tactic , i ;
17798: LD_EXP 18
17802: PUSH
17803: LD_INT 1
17805: EQUAL
17806: PUSH
17807: LD_INT 22
17809: PUSH
17810: LD_EXP 74
17814: PUSH
17815: EMPTY
17816: LIST
17817: LIST
17818: PUSH
17819: LD_INT 21
17821: PUSH
17822: LD_INT 2
17824: PUSH
17825: EMPTY
17826: LIST
17827: LIST
17828: PUSH
17829: LD_INT 24
17831: PUSH
17832: LD_INT 1000
17834: PUSH
17835: EMPTY
17836: LIST
17837: LIST
17838: PUSH
17839: EMPTY
17840: LIST
17841: LIST
17842: LIST
17843: PPUSH
17844: CALL_OW 69
17848: PUSH
17849: LD_INT 5
17851: GREATEREQUAL
17852: AND
17853: IFFALSE 18013
17855: GO 17857
17857: DISABLE
17858: LD_INT 0
17860: PPUSH
17861: PPUSH
// begin enable ;
17862: ENABLE
// Tactic = Rand ( 1 , 2 ) ;
17863: LD_ADDR_VAR 0 1
17867: PUSH
17868: LD_INT 1
17870: PPUSH
17871: LD_INT 2
17873: PPUSH
17874: CALL_OW 12
17878: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
17879: LD_ADDR_VAR 0 2
17883: PUSH
17884: LD_INT 22
17886: PUSH
17887: LD_EXP 74
17891: PUSH
17892: EMPTY
17893: LIST
17894: LIST
17895: PUSH
17896: LD_INT 21
17898: PUSH
17899: LD_INT 2
17901: PUSH
17902: EMPTY
17903: LIST
17904: LIST
17905: PUSH
17906: LD_INT 24
17908: PUSH
17909: LD_INT 1000
17911: PUSH
17912: EMPTY
17913: LIST
17914: LIST
17915: PUSH
17916: EMPTY
17917: LIST
17918: LIST
17919: LIST
17920: PPUSH
17921: CALL_OW 69
17925: PUSH
17926: FOR_IN
17927: IFFALSE 18011
// begin if Tactic = 1 then
17929: LD_VAR 0 1
17933: PUSH
17934: LD_INT 1
17936: EQUAL
17937: IFFALSE 17969
// begin AddComAgressiveMove ( i , 16 , 10 ) ;
17939: LD_VAR 0 2
17943: PPUSH
17944: LD_INT 16
17946: PPUSH
17947: LD_INT 10
17949: PPUSH
17950: CALL_OW 174
// AddComAgressiveMove ( i , 146 , 11 ) ;
17954: LD_VAR 0 2
17958: PPUSH
17959: LD_INT 146
17961: PPUSH
17962: LD_INT 11
17964: PPUSH
17965: CALL_OW 174
// end ; if Tactic = 2 then
17969: LD_VAR 0 1
17973: PUSH
17974: LD_INT 2
17976: EQUAL
17977: IFFALSE 18009
// begin AddComAgressiveMove ( i , 146 , 11 ) ;
17979: LD_VAR 0 2
17983: PPUSH
17984: LD_INT 146
17986: PPUSH
17987: LD_INT 11
17989: PPUSH
17990: CALL_OW 174
// AddComAgressiveMove ( i , 16 , 10 ) ;
17994: LD_VAR 0 2
17998: PPUSH
17999: LD_INT 16
18001: PPUSH
18002: LD_INT 10
18004: PPUSH
18005: CALL_OW 174
// end ; end ;
18009: GO 17926
18011: POP
18012: POP
// end ;
18013: PPOPN 2
18015: END
// export DestroyRepairRU2 ; export function RepairBuildingRussian2 ; var enginer_list , scientist_list , buildings , i , un ; begin
18016: LD_INT 0
18018: PPUSH
18019: PPUSH
18020: PPUSH
18021: PPUSH
18022: PPUSH
18023: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_class , 2 ] ] ) ;
18024: LD_ADDR_VAR 0 2
18028: PUSH
18029: LD_INT 22
18031: PUSH
18032: LD_EXP 75
18036: PUSH
18037: EMPTY
18038: LIST
18039: LIST
18040: PUSH
18041: LD_INT 25
18043: PUSH
18044: LD_INT 2
18046: PUSH
18047: EMPTY
18048: LIST
18049: LIST
18050: PUSH
18051: EMPTY
18052: LIST
18053: LIST
18054: PPUSH
18055: CALL_OW 69
18059: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_class , 4 ] ] ) ;
18060: LD_ADDR_VAR 0 3
18064: PUSH
18065: LD_INT 22
18067: PUSH
18068: LD_EXP 75
18072: PUSH
18073: EMPTY
18074: LIST
18075: LIST
18076: PUSH
18077: LD_INT 25
18079: PUSH
18080: LD_INT 4
18082: PUSH
18083: EMPTY
18084: LIST
18085: LIST
18086: PUSH
18087: EMPTY
18088: LIST
18089: LIST
18090: PPUSH
18091: CALL_OW 69
18095: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu4 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
18096: LD_ADDR_VAR 0 4
18100: PUSH
18101: LD_INT 22
18103: PUSH
18104: LD_EXP 75
18108: PUSH
18109: EMPTY
18110: LIST
18111: LIST
18112: PUSH
18113: LD_INT 21
18115: PUSH
18116: LD_INT 3
18118: PUSH
18119: EMPTY
18120: LIST
18121: LIST
18122: PUSH
18123: LD_INT 3
18125: PUSH
18126: LD_INT 24
18128: PUSH
18129: LD_INT 1000
18131: PUSH
18132: EMPTY
18133: LIST
18134: LIST
18135: PUSH
18136: EMPTY
18137: LIST
18138: LIST
18139: PUSH
18140: EMPTY
18141: LIST
18142: LIST
18143: LIST
18144: PUSH
18145: EMPTY
18146: LIST
18147: PPUSH
18148: CALL_OW 69
18152: ST_TO_ADDR
// DestroyRepairRU2 = 0 ;
18153: LD_ADDR_EXP 80
18157: PUSH
18158: LD_INT 0
18160: ST_TO_ADDR
// if buildings > 0 then
18161: LD_VAR 0 4
18165: PUSH
18166: LD_INT 0
18168: GREATER
18169: IFFALSE 18304
// begin for i = 1 to enginer_list do
18171: LD_ADDR_VAR 0 5
18175: PUSH
18176: DOUBLE
18177: LD_INT 1
18179: DEC
18180: ST_TO_ADDR
18181: LD_VAR 0 2
18185: PUSH
18186: FOR_TO
18187: IFFALSE 18302
// begin ComExitBuilding ( enginer_list [ i ] ) ;
18189: LD_VAR 0 2
18193: PUSH
18194: LD_VAR 0 5
18198: ARRAY
18199: PPUSH
18200: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
18204: LD_VAR 0 2
18208: PUSH
18209: LD_VAR 0 5
18213: ARRAY
18214: PPUSH
18215: LD_VAR 0 4
18219: PUSH
18220: LD_INT 1
18222: ARRAY
18223: PPUSH
18224: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
18228: LD_VAR 0 2
18232: PUSH
18233: LD_VAR 0 5
18237: ARRAY
18238: PPUSH
18239: CALL_OW 256
18243: PUSH
18244: LD_INT 800
18246: LESS
18247: IFFALSE 18282
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
18249: LD_VAR 0 3
18253: PUSH
18254: LD_INT 1
18256: ARRAY
18257: PPUSH
18258: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , Ru2HealZone ) ;
18262: LD_VAR 0 2
18266: PUSH
18267: LD_VAR 0 5
18271: ARRAY
18272: PPUSH
18273: LD_INT 14
18275: PPUSH
18276: CALL_OW 113
// end else
18280: GO 18300
// ComEnterUnit ( scientist_list [ 1 ] , ru2lab ) ;
18282: LD_VAR 0 3
18286: PUSH
18287: LD_INT 1
18289: ARRAY
18290: PPUSH
18291: LD_EXP 66
18295: PPUSH
18296: CALL_OW 120
// end ;
18300: GO 18186
18302: POP
18303: POP
// end ; for i = 1 to enginer_list do
18304: LD_ADDR_VAR 0 5
18308: PUSH
18309: DOUBLE
18310: LD_INT 1
18312: DEC
18313: ST_TO_ADDR
18314: LD_VAR 0 2
18318: PUSH
18319: FOR_TO
18320: IFFALSE 18481
// begin wait ( 0 0$3 ) ;
18322: LD_INT 105
18324: PPUSH
18325: CALL_OW 67
// if buildings = 0 and DestroyRepairAM = 0 then
18329: LD_VAR 0 4
18333: PUSH
18334: LD_INT 0
18336: EQUAL
18337: PUSH
18338: LD_EXP 77
18342: PUSH
18343: LD_INT 0
18345: EQUAL
18346: AND
18347: IFFALSE 18371
// begin ComEnterUnit ( enginer_list [ i ] , ru2depo ) ;
18349: LD_VAR 0 2
18353: PUSH
18354: LD_VAR 0 5
18358: ARRAY
18359: PPUSH
18360: LD_EXP 65
18364: PPUSH
18365: CALL_OW 120
// end else
18369: GO 18386
// begin ComExitBuilding ( enginer_list [ i ] ) ;
18371: LD_VAR 0 2
18375: PUSH
18376: LD_VAR 0 5
18380: ARRAY
18381: PPUSH
18382: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
18386: LD_VAR 0 2
18390: PUSH
18391: LD_VAR 0 5
18395: ARRAY
18396: PPUSH
18397: CALL_OW 256
18401: PUSH
18402: LD_INT 1000
18404: LESS
18405: IFFALSE 18440
// begin ComMoveToArea ( enginer_List [ i ] , Ru2HealZone ) ;
18407: LD_VAR 0 2
18411: PUSH
18412: LD_VAR 0 5
18416: ARRAY
18417: PPUSH
18418: LD_INT 14
18420: PPUSH
18421: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
18425: LD_VAR 0 3
18429: PUSH
18430: LD_INT 1
18432: ARRAY
18433: PPUSH
18434: CALL_OW 122
// end else
18438: GO 18479
// if GetLives ( enginer_list [ i ] ) = 1000 then
18440: LD_VAR 0 2
18444: PUSH
18445: LD_VAR 0 5
18449: ARRAY
18450: PPUSH
18451: CALL_OW 256
18455: PUSH
18456: LD_INT 1000
18458: EQUAL
18459: IFFALSE 18479
// begin ComEnterUnit ( scientist_list [ 1 ] , ru2lab ) ;
18461: LD_VAR 0 3
18465: PUSH
18466: LD_INT 1
18468: ARRAY
18469: PPUSH
18470: LD_EXP 66
18474: PPUSH
18475: CALL_OW 120
// end ; end ;
18479: GO 18319
18481: POP
18482: POP
// end ;
18483: LD_VAR 0 1
18487: RET
// every 0 0$3 trigger KirovAI = 1 do var i , l ;
18488: LD_EXP 19
18492: PUSH
18493: LD_INT 1
18495: EQUAL
18496: IFFALSE 18573
18498: GO 18500
18500: DISABLE
18501: LD_INT 0
18503: PPUSH
18504: PPUSH
// begin enable ;
18505: ENABLE
// for i in FilterUnitsInArea ( KirovBase , [ [ f_class , 1 ] , [ f_side , cpu3 ] ] ) do
18506: LD_ADDR_VAR 0 1
18510: PUSH
18511: LD_INT 16
18513: PPUSH
18514: LD_INT 25
18516: PUSH
18517: LD_INT 1
18519: PUSH
18520: EMPTY
18521: LIST
18522: LIST
18523: PUSH
18524: LD_INT 22
18526: PUSH
18527: LD_EXP 74
18531: PUSH
18532: EMPTY
18533: LIST
18534: LIST
18535: PUSH
18536: EMPTY
18537: LIST
18538: LIST
18539: PPUSH
18540: CALL_OW 70
18544: PUSH
18545: FOR_IN
18546: IFFALSE 18571
// begin wait ( 0 0$1 ) ;
18548: LD_INT 35
18550: PPUSH
18551: CALL_OW 67
// ComEnterUnit ( i , ru2armoury ) ;
18555: LD_VAR 0 1
18559: PPUSH
18560: LD_EXP 68
18564: PPUSH
18565: CALL_OW 120
// end ;
18569: GO 18545
18571: POP
18572: POP
// end ;
18573: PPOPN 2
18575: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_type , unit_vehicle ] ] ) = 0 do
18576: LD_INT 22
18578: PUSH
18579: LD_EXP 75
18583: PUSH
18584: EMPTY
18585: LIST
18586: LIST
18587: PUSH
18588: LD_INT 21
18590: PUSH
18591: LD_INT 2
18593: PUSH
18594: EMPTY
18595: LIST
18596: LIST
18597: PUSH
18598: EMPTY
18599: LIST
18600: LIST
18601: PPUSH
18602: CALL_OW 69
18606: PUSH
18607: LD_INT 0
18609: EQUAL
18610: IFFALSE 18721
18612: GO 18614
18614: DISABLE
// begin enable ;
18615: ENABLE
// AddComConstruct ( ru2fab , 22 , 1 , 1 , 44 ) ;
18616: LD_EXP 67
18620: PPUSH
18621: LD_INT 22
18623: PPUSH
18624: LD_INT 1
18626: PPUSH
18627: LD_INT 1
18629: PPUSH
18630: LD_INT 44
18632: PPUSH
18633: CALL_OW 185
// AddComConstruct ( ru2fab , 22 , 1 , 1 , 44 ) ;
18637: LD_EXP 67
18641: PPUSH
18642: LD_INT 22
18644: PPUSH
18645: LD_INT 1
18647: PPUSH
18648: LD_INT 1
18650: PPUSH
18651: LD_INT 44
18653: PPUSH
18654: CALL_OW 185
// AddComConstruct ( ru2fab , 22 , 1 , 1 , 44 ) ;
18658: LD_EXP 67
18662: PPUSH
18663: LD_INT 22
18665: PPUSH
18666: LD_INT 1
18668: PPUSH
18669: LD_INT 1
18671: PPUSH
18672: LD_INT 44
18674: PPUSH
18675: CALL_OW 185
// AddComConstruct ( ru2fab , 22 , 1 , 1 , 43 ) ;
18679: LD_EXP 67
18683: PPUSH
18684: LD_INT 22
18686: PPUSH
18687: LD_INT 1
18689: PPUSH
18690: LD_INT 1
18692: PPUSH
18693: LD_INT 43
18695: PPUSH
18696: CALL_OW 185
// AddComConstruct ( ru2fab , 22 , 1 , 1 , 43 ) ;
18700: LD_EXP 67
18704: PPUSH
18705: LD_INT 22
18707: PPUSH
18708: LD_INT 1
18710: PPUSH
18711: LD_INT 1
18713: PPUSH
18714: LD_INT 43
18716: PPUSH
18717: CALL_OW 185
// end ;
18721: END
// every 1 1$0 trigger KirovAI = 1 and FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) >= 5 do var tactic , i ;
18722: LD_EXP 19
18726: PUSH
18727: LD_INT 1
18729: EQUAL
18730: PUSH
18731: LD_INT 22
18733: PUSH
18734: LD_EXP 75
18738: PUSH
18739: EMPTY
18740: LIST
18741: LIST
18742: PUSH
18743: LD_INT 21
18745: PUSH
18746: LD_INT 2
18748: PUSH
18749: EMPTY
18750: LIST
18751: LIST
18752: PUSH
18753: LD_INT 24
18755: PUSH
18756: LD_INT 1000
18758: PUSH
18759: EMPTY
18760: LIST
18761: LIST
18762: PUSH
18763: EMPTY
18764: LIST
18765: LIST
18766: LIST
18767: PPUSH
18768: CALL_OW 69
18772: PUSH
18773: LD_INT 5
18775: GREATEREQUAL
18776: AND
18777: IFFALSE 18937
18779: GO 18781
18781: DISABLE
18782: LD_INT 0
18784: PPUSH
18785: PPUSH
// begin enable ;
18786: ENABLE
// Tactic = Rand ( 1 , 2 ) ;
18787: LD_ADDR_VAR 0 1
18791: PUSH
18792: LD_INT 1
18794: PPUSH
18795: LD_INT 2
18797: PPUSH
18798: CALL_OW 12
18802: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
18803: LD_ADDR_VAR 0 2
18807: PUSH
18808: LD_INT 22
18810: PUSH
18811: LD_EXP 75
18815: PUSH
18816: EMPTY
18817: LIST
18818: LIST
18819: PUSH
18820: LD_INT 21
18822: PUSH
18823: LD_INT 2
18825: PUSH
18826: EMPTY
18827: LIST
18828: LIST
18829: PUSH
18830: LD_INT 24
18832: PUSH
18833: LD_INT 1000
18835: PUSH
18836: EMPTY
18837: LIST
18838: LIST
18839: PUSH
18840: EMPTY
18841: LIST
18842: LIST
18843: LIST
18844: PPUSH
18845: CALL_OW 69
18849: PUSH
18850: FOR_IN
18851: IFFALSE 18935
// begin if Tactic = 1 then
18853: LD_VAR 0 1
18857: PUSH
18858: LD_INT 1
18860: EQUAL
18861: IFFALSE 18893
// begin AddComAgressiveMove ( i , 16 , 10 ) ;
18863: LD_VAR 0 2
18867: PPUSH
18868: LD_INT 16
18870: PPUSH
18871: LD_INT 10
18873: PPUSH
18874: CALL_OW 174
// AddComAgressiveMove ( i , 146 , 11 ) ;
18878: LD_VAR 0 2
18882: PPUSH
18883: LD_INT 146
18885: PPUSH
18886: LD_INT 11
18888: PPUSH
18889: CALL_OW 174
// end ; if Tactic = 2 then
18893: LD_VAR 0 1
18897: PUSH
18898: LD_INT 2
18900: EQUAL
18901: IFFALSE 18933
// begin AddComAgressiveMove ( i , 146 , 11 ) ;
18903: LD_VAR 0 2
18907: PPUSH
18908: LD_INT 146
18910: PPUSH
18911: LD_INT 11
18913: PPUSH
18914: CALL_OW 174
// AddComAgressiveMove ( i , 16 , 10 ) ;
18918: LD_VAR 0 2
18922: PPUSH
18923: LD_INT 16
18925: PPUSH
18926: LD_INT 10
18928: PPUSH
18929: CALL_OW 174
// end ; end ;
18933: GO 18850
18935: POP
18936: POP
// end ;
18937: PPOPN 2
18939: END
